gpt4 book ai didi

unit-testing - 我的单元测试应该有多干?

转载 作者:行者123 更新时间:2023-12-03 14:38:47 27 4
gpt4 key购买 nike

我正在为我的 webapp 编写单元测试。我的许多测试用例共享相同的样板。例如,从购物车中删除商品和更新购物车中商品数量的测试都从导航到产品页面、搜索产品并将其添加到购物车开始。

这种重复的代码是否应该以某种方式从单元测试中剔除?我应该写一个函数add_item_to_cart ?但是,我还有另一个测试 test_add_to_cart ,它基本上只包含添加到购物车的重复样板。

由于每个测试都需要独立,单元测试本质上不是 DRY 吗?

最佳答案

Unit tests are supposed to test just one thing .以“导航到产品页面、搜索产品并将其添加到购物车”开始的测试——这是三个不同的东西——听起来根本不像一个单元测试,而是一个集成测试。我怀疑你实际上有两个不同的测试要在这里构建。

您的集成测试,位于 Cucumber或类似的东西,应该包括一系列步骤:

When I navigate to the products page
And I search for a product
And I add it to the cart

您可以定义每个步骤一次并多次使用它,使其变得既美观又干燥。

另一方面,您的单元测试应该删除所有必要的设置,只测试您感兴趣的一件事:
before
stub(cart)
stub(product)
click on "X" for item in cart
it should...
expect(cart not to contain item)
expect(product count to be updated)

如果这变得非常复杂并且涉及大量 stub ,则表明您的代码不是模块化的;解决方案是 TDD 并首先编写测试,而不是之后添加它们。

关于unit-testing - 我的单元测试应该有多干?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099729/

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