Javascript 如何确保Jasmine单元测试中的代码干燥?
如果我有一个popover,我想测试它:Javascript 如何确保Jasmine单元测试中的代码干燥?,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,如果我有一个popover,我想测试它: 正在创建 被操纵 被毁 将其声明在一个地方(隐藏在“descripe”中)是有益的,这样它就可以在整个“its”中共享 我们应该在测试之间共享东西吗?也就是说,test2依赖于首先运行test1? 用茉莉花做这件事最好的方法是什么?依赖测试顺序是件坏事。要在测试之间共享内容,您可以使用一种方法来设置对象的状态。假设伪代码如下: var popover = getPopover({state:'init'}); //checking init state
用茉莉花做这件事最好的方法是什么?依赖测试顺序是件坏事。要在测试之间共享内容,您可以使用一种方法来设置对象的状态。假设伪代码如下:
var popover = getPopover({state:'init'});
//checking init state
...
//other test starting
var popover = getPopover({state:'manipulated'});
//checking the state
因此,主要思想是能够在需要的状态下初始化对象。
请注意,如果执行初始化的代码不多,并且不需要大量重用,则可以为每个测试硬编码状态设置。当然,它不是干的,但是您可以从可以阅读的测试中获益,而不需要参考其他方法。有时候这是件好事,但这要看情况而定
此外,您还可以在每次测试前后使用
beforeach
和afterEach
进行设置和拆卸(这是一个描述级别的事情)。这是执行状态初始化和清理的首选方法之一。依赖测试顺序是一件坏事。要在测试之间共享内容,您可以使用一种方法来设置对象的状态。假设伪代码如下:
var popover = getPopover({state:'init'});
//checking init state
...
//other test starting
var popover = getPopover({state:'manipulated'});
//checking the state
因此,主要思想是能够在需要的状态下初始化对象。
请注意,如果执行初始化的代码不多,并且不需要大量重用,则可以为每个测试硬编码状态设置。当然,它不是干的,但是您可以从可以阅读的测试中获益,而不需要参考其他方法。有时候这是件好事,但这要看情况而定
此外,您还可以在每次测试前后使用beforeach
和afterEach
进行设置和拆卸(这是一个描述级别的事情)。这是执行状态初始化和清理的首选方法之一