我創建了如下的書類
public class book
{
public int id {get;set;}
public string bookName {get;set;}
}
我定義書籍資料串列:List<book> books如
[
{"id":1,"bookName":"falling apple"},{"id":2,"bookName":"fall app"},{"id":3,"bookName":"fall apples"}
]
我想斷言應該是正確的,如果書籍串列中的 bookName 可以在string[] expectResults {"apple", "ap"}
下面的示例中找到
books.should().match(m=>m.any(expectResults.contains(m.bookName)))
但它總是失敗,任何人都可以建議如何做到這一點?
謝謝
uj5u.com熱心網友回復:
如果我理解正確,那么您可以為此使用擴展方法。Assert用這樣的方法創建一個類:
public static class Assertion
{
public static bool Assert(this List<Book> books, IEnumerable<string> expectedResults)
{
books = expectedResults.Aggregate(books, (current, expectedResult) => current.Where(b => !b.BookName.Contains(expectedResult)).ToList());
return books.Count == 0;
}
}
您可以從這樣的控制臺應用程式進行測驗:
private static void Main()
{
var books = new List<Book>
{
new Book { Id = 1, BookName = "falling apple" },
new Book { Id = 2, BookName = "fall app" },
new Book { Id = 3, BookName = "fall apples" }
};
var expectedResults = new[] { "apple", "ap" };
Console.WriteLine(books.Assert(expectedResults)
? "All expected results found."
: "Some expected results not found.");
}
這可以(應該!)通過在 Assert 方法中檢查一個空的書單和/或空的預期結果來改進。
uj5u.com熱心網友回復:
你必須應用顛倒的想法。因為您需要匹配部分串列檢查示例。我只用蘋果做的
void Main()
{
string json = "[{\"id\":1,\"bookName\":\"falling apple\"},{\"id\":2,\"bookName\":\"fall app\"},{\"id\":3,\"bookName\":\"fall apples\"}]";
var obj = JsonConvert.DeserializeObject<List<book>>(json);
List<string> expectResults = new List<string>() { "apple"};
var result = new List<book>();
obj.ForEach(fe =>
{
expectResults.ForEach(fee => {
if(fe.bookName.Contains(fee))
result.Add(fe);
});
});
Console.Write(result);
}
public class book
{
public int id { get; set; }
public string bookName { get; set; }
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/484096.html
