我正在使用redux作为反应应用程序,使用thunk中间件。
我有这个方法:
export function login(username, password) {
return function (dispatch, getState) {
dispatch(loginRequest());
return sessionService.login(dispatch, username, password).then(redirectTo => {
dispatch(handleSuccessfulAuthentication(redirectTo));
}).catch(error => {...}
};
}
所以我正在敲取服务的结果,并且行动正常。但我想测试我正在调度方法handleSuccessfulAuthentication
但是监视该方法似乎不起作用,它总是返回它没有被调用(除了我看到返回的动作)
这基本上是我的考验:
describe('WHEN logging in from sessionExpired', () => {
let action;
beforeAll(() => {
...
testHelper.getUnAuthenticatedNock()
.post(`/${endpoints.LOGIN}`, credentials)
.reply(200, {
...loginResponse
});
action = sinon.spy(sessionActions, 'handleSuccessfulAuthentication');
return store.dispatch(sessionActions.login(credentials.username, credentials.password))
}
it('Should redirect to previous visited page', () => {
console.log(action.called); // false
});
答案 0 :(得分:1)
您需要调出导出的功能(请注意我们正在调用var foo = await TryLogin(request);
if (foo.IsSuccess)
return foo.Result;
绑定handleSuccessfulAuthentication
):
exports
然后你的测试:
export function login(username, password) {
return function (dispatch, getState) {
dispatch(loginRequest());
return sessionService.login(dispatch, username, password).then(redirectTo => {
dispatch(exports.handleSuccessfulAuthentication(redirectTo));
}).catch(error => {...}
};
}
这是一个奇怪的问题,你必须调用绑定到导出的函数。更多信息请访问:https://github.com/facebook/jest/issues/936#issuecomment-214939935