我需要帮助测试使用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();
});
测试这样的功能的最佳方法是什么?防止重定向或使用包装器进行重定向功能? 感谢。
答案 0 :(得分:0)
我有一个相当复杂的代码我用Mocha测试,为了将它与Mocha隔离,我在iframe
中运行它。这可以防止我的应用程序弄乱Mocha测试。它也应该用于防止window.location
的分配停止测试,因为window.location
是帧的本地。 (框架中的Window
对象是与包含框架的页面中的对象不同的对象。)