【发布时间】:2017-05-23 09:51:02
【问题描述】:
我在用户中有以下代码:
import { redirectTo } from 'urlUtils';
export function create(user) {
api.postUser(user).then((response) => {
redirectTo(response.userUrl);
})
}
我有以下测试:
import * as api from 'api'
import * as user from 'user'
sinon.stub(api, 'postUser').returns(
Promise.resolve({ userUrl: 'a-url' })
);
sinon.spy(urlUtils, 'redirectTo');
const userData = {id: 2};
user.create(userData);
expect(api.postUser.calledWith(userData)).toBe(true); // This passes
expect(urlUtils.redirectTo.calledOnce).toBe(true); // This fails
我已经能够在浏览器上对其进行测试,并且重定向正在发生。我在这里想念什么?我已经存根请求调用以同步解决承诺,所以这不应该是一个问题。
【问题讨论】:
-
promise 是异步的 - 你不需要等待它解决
-
但是我正在处理和解决 Promise,正如您在以下位置看到的:
sinon.stub(api, 'poserUser').returns( Promise.resolve({ userUrl: 'a-url' }) ); -
但是,promise 仍然是异步的
-
那么,测试这些场景的最佳方法是什么?
-
sinon.stub(api, 'poserUser')是错字吗?不应该是“postUser”吗?
标签: javascript testing promise mocha.js sinon