如何确保Jasmine Unit测试中的DRY代码?

时间:2013-08-01 02:35:35

标签: javascript unit-testing jasmine

如果我有一个popover说,我想测试它:

  1. 正在创建
  2. 被操纵
  3. 被摧毁
  4. 将它声明放在一个地方(隐藏在#34;描述")中是有益的,这样它就可以在"它的"。

    之间共享。

    是否应该在测试之间分享内容? I.E test2依赖于test1首先运行? 使用Jasmine的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

依赖测试订单是件坏事。要在测试之间共享内容,您可以设置对象的状态。假设下面的伪代码:

var popover = getPopover({state:'init'});
//checking init state
...
//other test starting
var popover = getPopover({state:'manipulated'});
//checking the state

所以主要的想法是能够在你需要的状态下初始化你的对象。 请注意,如果执行初始化的代码不多,并且您不需要重复使用它,则可以对每个测试的状态设置进行硬编码。当然,它并不干燥,但您可以从可以阅读的测试中受益,而无需参考其他方法。有时这是件好事,但这取决于。

此外,您可以在每次测试之前和之后使用beforeEachafterEach进行设置和拆卸(这是一个描述级别的事情)。这是执行状态初始化和清理的首选方法之一。