【发布时间】:2018-09-02 09:55:18
【问题描述】:
这是一篇文章:https://martinfowler.com/articles/mocksArentStubs.html#ClassicalAndMockistTesting
这与经典 TDD 和 Mockist 有关。我的理解是应该单独测试类,因此应该对所有依赖项进行存根/模拟。然而,根据文章,似乎有一大群人使用真实对象的经典 TDDers。互联网上有各种文章强调单元测试当然不应该使用除 SUT 之外的真实类。例如,从 Microsoft 网站上的存根上看一下这个:https://docs.microsoft.com/en-us/visualstudio/test/using-stubs-to-isolate-parts-of-your-application-from-each-other-for-unit-testing
public int GetContosoPrice()
{
var stockFeed = new StockFeed(); // NOT RECOMMENDED
return stockFeed.GetSharePrice("COOO");
}
有人能解开我的困惑吗?
【问题讨论】:
-
请记住,那篇文章写于 2007 年,当时 BDD 仍然主要关注类级别的行为(现在大多数人熟悉的系统级别的场景直到Dave Chelimsky 那年晚些时候的帖子:blog.davidchelimsky.net/blog/2007/10/21/…)。如今,我们在系统级别做 Martin 所说的“经典”(在我们的场景中使用真实系统或真实系统),但我们仍然在类级别使用模拟和存根。我在我的代码库中这样做:github.com/lunivore/montecarluni
-
很多关于 BDD 的问题都像这样被关闭了,所以如果你遇到困难,请到 BDD Google 群组:groups.google.com/forum/#!forum/behaviordrivendevelopment
-
@ImranAzad 有什么困惑?单元测试一直是一个有争议的话题,因此互联网上不同的人有不同的强烈意见也就不足为奇了。
标签: unit-testing mocking tdd bdd