我试图用JEST测试我的服务并用nock模拟端点。服务看起来像这样
export async function get(id) {
const params = {
mode: 'cors',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
};
let response = await fetch(`{$API}/projects/${id}`, params);
return response.json();
}
测试:
import {
get
} from './project';
import nock from 'nock';
const fetchNockProject = nock($API)
.get('/projects/1')
.reply('200', {});
const data = await get(1);
expect(data).resolves.toEqual(project);
当我运行测试时,我收到错误:
console.error node_modules / jsdom / lib / jsdom / virtual-console.js:29 错误:交叉原点null禁止
TypeError:网络请求失败
任何想法为什么虚拟控制台抛出这个,因为这只是服务。
答案 0 :(得分:11)
我找到了与CORS相关的问题解决方案。 Nock mock应该是:
fetchNockProject = nock($API)
.defaultReplyHeaders({ 'access-control-allow-origin': '*' })
.get('/projects/1')
.reply('200', project);
答案 1 :(得分:0)
好吧,发布的答案对我没有用,虽然我不是说错了,但我想我应该分享对我有用的。
就我而言,我的服务器是ASP.NET Core。我没有使用提供的Cors middleware module。我在其中添加并配置了它,并且解决了我的问题,无需更改我的javascript文件。