2015-05-05 25 views
12

取消注释最后的规格。所有地狱都打破了......为什么?茉莉花应该按照它们的声明顺序或随机顺序执行规格吗?

describe('test', function() { 
    var index = 1; 

    it('test 1', function() { 
    expect(index).toBe(1); 
    index++; 
    }); 

    it('test 2', function() { 
    expect(index).toBe(2); 
    index++; 
    }); 

    it('test 3', function() { 
    expect(index).toBe(3); 
    index++; 
    }); 

    it('test 4', function() { 
    expect(index).toBe(4); 
    index++; 
    }); 

    it('test 5', function() { 
    expect(index).toBe(5); 
    index++; 
    }); 

    it('test 6', function() { 
    expect(index).toBe(6); 
    index++; 
    }); 

    it('test 7', function() { 
    expect(index).toBe(7); 
    index++; 
    }); 

    it('test 8', function() { 
    expect(index).toBe(8); 
    index++; 
    }); 

    it('test 9', function() { 
    expect(index).toBe(9); 
    index++; 
    }); 

    it('test 10', function() { 
    expect(index).toBe(10); 
    index++; 
    }); 

    // it('test 11', function() { 
    // expect(index).toBe(11); 
    // index++; 
    // }); 

}); 

感谢@PWKad指出,当超过10次测试时会发生这种情况。

+1

它总是跑在我的声明的顺序。我唯一的建议是将真正的套件减少到最低限度,以显示问题并在问题中发布代码。 –

+2

我对茉莉花没有大量的经验,但是对于一般的单元测试,你不应该指望它们以任何特定顺序运行 - 毕竟它们是单元测试。如果一个特定的测试需要某些条件,那应该在该测试的设置/拆除中。 –

+0

@JamesThorpe问题是被测试的功能是有状态的并且具有异步API。如果我不能依赖订单规范执行,我将得到一个深层嵌套的规范,这是丑陋的,并不反映正在测试的API部分。如果有人确切知道茉莉花的“预期”行为是什么,我可以忍受它。到目前为止,我的经历与Michal Charemza相同。 –

回答

10

是的,Jasmine按顺序执行规格(it)。从2.3.0到2.3.3有超过10个规格的问题。我在2.3.3中遇到了同样的问题,问题在2.3.4中得到了解决。

https://github.com/jasmine/jasmine/issues/850

我只是用2.3.4替代2.3.3和我的15周的测试终于过去了。

4

当前(v2.x)Jasmine按照它们定义的顺序运行测试。但是,有一个新的(2015年10月)选项以随机顺序运行规格,默认情况下它仍然处于关闭状态。根据项目所有者,在Jasmine 3.x中,它将被转换为默认值。

参考文献:

+0

伟大的信息 - thanks! –