0

自 2.x 以来,异步测试的语法发生了变化,文档不清楚。

有人可以澄清我如何执行一些代码,阻塞 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);

});
4

1 回答 1

0

done需要作为参数传递给规范,并且done()需要作为setTimeout()块中的最后一条语句调用。

如果异步规范总共超过 5 秒,它将失败,有关更多信息,请参阅 jasmine 文档摘录:

默认情况下,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);

});
于 2017-07-13T22:05:47.673 回答