【发布时间】:2016-12-09 14:31:15
【问题描述】:
我正在尝试使用 Flux 存储测试一些非常简单的功能,这些功能在特定事件调用服务时发出 http 请求并返回 Promise,存储看起来像:
case UserActions.FETCH_USER_BY_ID:
const userService = new UserService();
userService.fetchUserById(action.id)
then(user => {
this.user = user;
this.emit(USER_FETCH_COMPLETED);
});
对于我正在使用Jasmine 的测试,我的测试用例如下所示:
it('should fetch user by id', () => {
const userStore = require('../stores/userStore');
const mockUser = {name: 'test', id: 123};
spyOn(UserService.prototype, 'fetchUserById')
.and.returnValue(Promise.resolve(mockUser));
dispatchEvent();
expect(userStore.user).toEqual(mockUser);
})
正如预期的那样,如果测试失败,由于Promise 的异步行为,我理解这里的问题,但我找不到解决方案如何说测试等到userService 的Promise 解决。
【问题讨论】:
标签: javascript unit-testing reactjs jasmine flux