Jasmine 2.6中的异步测试

时间:2017-07-12 17:23:25

标签: unit-testing jasmine bdd jasmine2.0

自2.x起,异步测试的语法发生了变化,documentation不明确。

有人可以澄清我如何执行某些代码,阻止3秒,然后使用新语法运行测试条件?

it('should update the table when new data is provided', function() {
  var newData = ",0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\nX-Y,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";

  fixture.datum(csv).call(fp);

  expect(fp.dataset()).toEqual(csv);

  fp.dataset(newData);

  expect(fp.dataset()).toEqual(newData);

  //block for 3 seconds
  expect(fixture.selectAll(".row").nodes().length).toBe(3);

});

1 个答案:

答案 0 :(得分:0)

已完成需要作为参数传递给规范, done()需要作为 setTimeout()<中的最后一个语句调用/ em>块。

如果异步规范总共超过5秒,它将失败,请参阅jasmine docs摘录以获取更多信息:

  

默认情况下,jasmine将等待5秒钟,以便在导致超时失败之前完成异步规范。如果在调用done之前超时到期,则当前规范将被标记为失败,并且套件执行将继续,就像调用done一样。

     

如果特定规格应该更快失败或需要更多时间,可以通过向其传递超时值等来调整,等等。

it('should update the table when new data is provided', function(done) {
  var newData = ",0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\nX-Y,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";

  fixture.datum(csv).call(fp);

  expect(fp.dataset()).toEqual(csv);

  fp.dataset(newData);

  expect(fp.dataset()).toEqual(newData);

  //block for 3 seconds, then execute expect
  setTimeout(function() {
      expect(fixture.selectAll(".row").nodes().length).toBe(3);
      done(); //dont forget!!
  }, 3000);

});