【发布时间】:2016-02-12 10:50:52
【问题描述】:
我需要帮助来测试使用 document.location 的操作。 我正在运行 react/redux + sinon/mocha。 这是我的行动:
export function importFile(file) {
return (dispatch) => {
dispatch(importFile());
return jQuery.post('/api/import/', {file}).done((data) => {
window.location = `/edit/${data.id}`;
}).fail((err) => {
return dispatch(importFileError(err));
});
};
}
如果你在命令行中运行我的测试 - 我无法检查在done 之后是否有重定向到页面,但是如果我在浏览器中运行我的测试我已经重定向并且所有其他测试都被丢弃了。
这是我的测试:
it('should create an action to upload import file', (done) => {
const id = '123';
const file = 'testname';
const server = sinon.fakeServer.create();
const expectedActions = [
{type: actions.IMPORT_FILE}
];
const store = mockStore({}, expectedActions, done);
store.dispatch(actions.importFileUpload(file));
server.respondWith([201, { 'Content-Type':'application/json' }, `{"id":"${id}","version":12}`]);
window.XMLHttpRequest = sinon.useFakeXMLHttpRequest();
server.respond();
});
测试此类功能的最佳方法是什么?防止重定向或使用包装器进行重定向功能? 谢谢。
【问题讨论】:
标签: unit-testing reactjs mocha.js sinon redux