【发布时间】:2017-02-23 19:10:42
【问题描述】:
我正在创建一个应用程序,在该应用程序中我使用 redux 和 node-fetch 进行远程数据获取。
我想测试一下,我用一个好的参数很好地调用了 fetch 函数。
这样,我使用 jest.mock 和 jasmine.createSpy 方法:
it('should have called the fetch method with URL constant', () => {
const spy = jasmine.createSpy('nodeFetch');
spy.and.callFake(() => new Promise(resolve => resolve('null')));
const mock = jest.mock('node-fetch', spy);
const slug = 'slug';
actionHandler[FETCH_REMOTE](slug);
expect(spy).toHaveBeenCalledWith(Constants.URL + slug);
});
这是我要测试的功能:
[FETCH_REMOTE]: slug => {
return async dispatch => {
dispatch(loading());
console.log(fetch()); // Displays the default fetch promise result
await fetch(Constants.URL + slug);
addLocal();
};
}
如您所见,我正在尝试记录 console.log(fetch()) 行为,并且我拥有 node-fetch 给出的默认解决承诺,而不是我用 Jest 模拟的承诺和用茉莉花窥探。
你知道什么是行不通的吗?
编辑:我的测试向我显示了一个错误,就像我的间谍从未被调用过
【问题讨论】:
标签: javascript unit-testing reactjs jasmine jestjs