Javascript jasmine应该按照声明的顺序执行规范,还是按照随机顺序执行规范?

Javascript jasmine应该按照声明的顺序执行规范,还是按照随机顺序执行规范?,javascript,unit-testing,jasmine,karma-jasmine,Javascript,Unit Testing,Jasmine,Karma Jasmine,联合国对上一个规范发表评论。所有的地狱都松开了。。。为什么? 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', functi

联合国对上一个规范发表评论。所有的地狱都松开了。。。为什么?

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个测试时,就会发生这种情况。

是的,Jasmine会按顺序执行规范(it)。从2.3.0到2.3.3有一个问题,超过10个规格。我在2.3.3中遇到了相同的问题,该问题在2.3.4中得到了修复

我刚刚用2.3.4代替了2.3.3,我的15个测试终于通过了。

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

参考资料:


它总是按照我宣布的顺序运行。我唯一的建议是将显示问题的真实套件缩减到最低限度,并在问题中发布代码。我对jasmine没有太多的经验,但一般来说,对于单元测试,你不应该期望它们以任何特定的顺序运行——毕竟它们是单元测试。如果某个特定的测试需要特定的条件,那么应该在该测试的设置/拆除中进行。我希望框架作者会告诉您不要依赖测试的顺序,因为这是一个实现细节,可能会随着任何版本的变化而变化。我很欣赏你上面的评论,但我怀疑依赖执行命令会让你痛苦,代价是没有“丑陋”的测试。通常,您的规格可以有一个“背景”,您可以在这里进行设置。@SamHolder同意,但有一点是关于10个以上的测试触发了随机顺序。为什么是10+?在works中包含所有11个规格的情况下运行它对我来说很好。必须是特定于茉莉花的版本。我同意知道这是什么原因会很好,但我仍然不会依赖于测试的特定顺序。这现在不是默认的,正如@Anton所说,Jasmine 3.x现在默认以随机顺序运行测试。那么有没有办法在3.x中关闭它?有没有办法禁用此默认行为?