我什么时候需要在Jasmine中使用beforeEach块?

时间:2017-04-24 06:47:22

标签: javascript unit-testing jasmine

我刚开始使用Jasmine学习单元测试。我已经浏览了official documentation的茉莉花并在stackoverflow上搜索了很多。请参阅以下代码。

describe('calculator', function () {
  var calculator;
  beforeEach( function(){
    calculator = new myApp.Calculator();
  });

  describe('sum', function () {
    it('1 + 1 should equal 2', function () {
        expect(calculator.add(1, 1)).toBe(2);
    }); 
  });

  describe('subtract', function () {
    it('3 - 2 should equal 1', function () {
        expect(calculator.subtract(3, 2)).toBe(1);
    });
  });

});

这里我在beforeEach块中初始化/创建了Calculator实例。如果我直接在第一个describe块内写入它而不使用beforeEach块,它也可以正常工作。

我了解beforeEachafterEach的用户。但是在这种情况下(或者对于任何这样的情况)我真的需要使用beforeEach没有人更新Calculator实例,在每个规范中我们只使用{{1}的方法}?如果我使用calculator,它将在每次测试之前每次创建新实例。但是为什么我总是需要一个新的实例,而我的测试用例都不会改变/更新我的实例?

1 个答案:

答案 0 :(得分:0)

如果要在beforeEach中直接创建计算器实例,而不使用beforeEach,那么实例将只创建一次(在测试用例开始时运行) )。 但是如果您将放入 div { overflow-y: scroll; } 块,那么将为每个单个测试用例运行创建新实例,因此每个测试用例都将有一个全新的实例。

最好为每个特定的测试用例提供一个新的实例。因为测试用例不应该依赖于另一个测试用例是拇指规则。测试用例应始终以独立顺序运行。