gpt4 book ai didi

c# - TDD:你会如何在这门课上工作,测试先行的风格?

转载 作者:太空狗 更新时间:2023-10-30 01:12:26 25 4
gpt4 key购买 nike

我正在编写一个小应用程序来自学 ASP.NET MVC,它的一个功能是能够在亚马逊(或其他站点)上搜索书籍并将它们添加到“书架”。

所以我创建了一个名为 IBookSearch 的接口(interface)(带有方法 DoSearch),以及一个如下所示的实现 AmazonSearch

public class AmazonSearch : IBookSearch
{
public IEnumerable<Book> DoSearch(string searchTerms)
{
var amazonResults = GetAmazonResults(searchTerms);
XNamespace ns = "http://webservices.amazon.com/AWSECommerceService/2005-10-05";
var books= from item in amazonResults.Elements(ns + "Items").Elements(ns + "Item")
select new Book
{
ASIN = GetValue(ns, item, "ASIN"),
Title = GetValue(ns, item, "Title"),
Author = GetValue(ns, item, "Author"),
DetailURL = GetValue(ns, item, "DetailPageURL")
};
return books.ToList();
}

private static XElement GetAmazonResults(string searchTerms)
{
const string AWSKey = "MY AWS KEY";
string encodedTerms = HttpUtility.UrlPathEncode(searchTerms);
string url = string.Format("<AMAZONSEARCHURL>{0}{1}",AWSKey, encodedTerms);
return XElement.Load(url);
}

private static string GetValue(XNamespace ns, XElement item, string elementName)
{
//Get values inside an XElement
}

}

理想情况下,我希望完成这种 TDD 风格,首先编写一个测试。但我必须承认,我无法理解它。

我可以创建一个实现 DoSearch() 的 FakeSearch 并返回一些临时书籍,但我认为目前这不会带来任何值(value),是吗?也许以后当我有一些使用书籍列表的代码时。

我还能先测试什么?我能想到的唯一测试是模拟对云的调用(在 GetAmazonResults),然后检查 DoSearch 是否可以正确执行 Linq2XML 选择并返回正确的列表。但在我看来,这种类型的测试只能在我准备好一些代码之后才能编写,所以我知道什么要模拟。

关于你们如何围绕这种测试先行的风格有什么建议吗?

最佳答案

看来您的主要问题是知道何时编写模拟代码。我明白你的意思:如果你还没有编写代码,你怎么能模拟它?

我认为答案是您希望从非常非常简单的测试开始您的 TDD,就像 Kent Beck 在 Test Driven Development 中所做的那样.首先编写一个调用 DoSearch 并断言您收到的内容不为空的测试,然后编写一些代码使其通过。然后编写一个测试,断言您正在为已知搜索词检索正确数量的 Books,并编写代码使其通过。最终你会到达一个点,你需要接收实际的、有效的 Book 数据才能通过测试,在那个点上,你将编写 DoSearch 的一部分,你可以考虑模拟它(或它的一部分).

关于c# - TDD:你会如何在这门课上工作,测试先行的风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com