设置了setTimeout之后的期望值

时间:2019-04-05 11:46:09

标签: javascript angular unit-testing

我无法将setTimeout中的期望值设置为相等。 我有两个有价值的是: const first = 0; const second = 0;

但是抛出错误是Uncauth TypeError:您在期望流的位置提供了“ undefined”。您可以提供Observable,Promise,Array或Interable。

setNumber() {
   setTimeout(() => {
     first = 12;
     second = 1235
}, 250);

it('Should execute setNumber', fakeAsync(() => {`
   setTimeout(() => {
     expected(first).toEqual(12);
     expected(second ).toEqual(1235);
   }, 251)
}))

1 个答案:

答案 0 :(得分:0)

在fakeAsync函数中,使用tick()来模拟超时。就像这样:

it('Should execute setNumber', fakeAsync(() => {
    let first;
    let second;

    setTimeout(() => {
      first = 12;
      second = 1235;
    }, 250);

    tick(251);

    expect(first).toEqual(12);
    expect(second).toEqual(1235);
  }));

为便于理解,请勾选249,然后测试将失败。

it('Should execute setNumber', fakeAsync(() => {
    let first;
    let second;

    setTimeout(() => {
      first = 12;
      second = 1235;
    }, 250);

    tick(249);

    expect(first).toEqual(12);
    expect(second).toEqual(1235);
  }));

希望我能帮助您:)