我想测试包含一些获取方法的JS文件。现在,我想模拟这些请求方法的响应,并遇到一些问题。
我已经导入了我想通过 rewire 测试的JS文件的所有方法。
为了模拟提取请求,我使用了fetch-mock。
如果我嘲笑这样的响应,则效果很好:
//test.js
fetchMock = require('fetch-mock');
fetchMock.mock('http://example.com', 200);
const res = await fetch('http://example.com');
assert(res.ok);
fetchMock.restore();
但是,当我使用JS文件的方法发送请求时,它不起作用。 例如:
//file.js
function fetchExample() {
return fetch('http://example.com');
}
//test.js
fetchMock = require('fetch-mock');
app = require('rewire');
fetchExmaple = app.__get__('fetchExmaple');
fetchMock.mock('http://example.com', 200);
const res = await fetchExmaple('http://example.com');
assert(res.ok);
fetchMock.restore();
似乎fetch-mock的范围仅在我的测试文件中,而我通过rewire导出的所有功能都在我的JS文件中执行。
我试图在我的JS文件中将fetchMock设置为全局变量,并在我的测试文件中执行fetchMock.mock()函数。
//test.js
//fetchMock = require('fetch-mock');
app.__set__('fetchMock', require('fetch-mock');
app = require('rewire');
fetchExmaple = app.__get__('fetchExmaple');
fetchMock.mock('http://example.com', 200);
const res = await fetchExmaple('http://example.com');
assert(res.ok);
fetchMock.restore();
但这也不起作用。我不知道如何在我的JS文件中执行fetchMock.mock()。 还是有其他解决方案?
我希望有人能帮助我。
谢谢。
最诚挚的问候。
索尼