redux observable:为什么不能在测试中获得所有操作

redux observable:为什么不能在测试中获得所有操作,redux,mocha.js,rxjs,sinon,redux-observable,Redux,Mocha.js,Rxjs,Sinon,Redux Observable,我正在尝试测试“redux observable epic”,但测试失败,因为并非所有操作都在store中。getActions()奇怪的是store.dispatch函数运行 史诗与行动 测试 测试结果 1) “操作/授权应调用epic进行验证: 错误:预期[{type:'auth/VERIFY_session'}]包含{token:'mitoken',type:'auth/AUTHENTICATE'}” 注 我确信条件令牌null pass我想在getAction之前添加一个超时,因为“身份

我正在尝试测试“redux observable epic”,但测试失败,因为并非所有操作都在store中。getActions()奇怪的是store.dispatch函数运行

史诗与行动 测试 测试结果 1) “操作/授权应调用epic进行验证: 错误:预期[{type:'auth/VERIFY_session'}]包含{token:'mitoken',type:'auth/AUTHENTICATE'}”


我确信条件令牌null pass

我想在getAction之前添加一个超时,因为“身份验证”操作是在getAction之后添加的

it('Should call authenticate if token', (done) => {
    const token = 'mitoken';
    asyncStorageGetStub.withArgs('token').returns(Promise.resolve(token));
    store.dispatch(verifySesion());
    setTimeout(() => {
      expect(store.getActions()).toContain({ type: AUTHENTICATE, token });
      done();
    }, 1000);
  });

我想在getAction之前添加一个超时,因为“身份验证”操作是在getAction之后添加的

it('Should call authenticate if token', (done) => {
    const token = 'mitoken';
    asyncStorageGetStub.withArgs('token').returns(Promise.resolve(token));
    store.dispatch(verifySesion());
    setTimeout(() => {
      expect(store.getActions()).toContain({ type: AUTHENTICATE, token });
      done();
    }, 1000);
  });

由于您正在调用
dispatch
expect
syncronous,因此返回的第一个操作将是VERIFY,AUTHENTICATE操作可能会在稍后添加(取决于您的epic完成的方式),因为您正在调用
dispatch
expect
syncronous,这是第一个操作,返回的将是验证,验证操作可能会在稍后添加(取决于您的epic如何完成)
it('Should call authenticate if token', (done) => {
    const token = 'mitoken';
    asyncStorageGetStub.withArgs('token').returns(Promise.resolve(token));
    store.dispatch(verifySesion());
    setTimeout(() => {
      expect(store.getActions()).toContain({ type: AUTHENTICATE, token });
      done();
    }, 1000);
  });