使用JEST和nock进行测试导致'Cross origin null禁止'

Mar*_*ski 5 jestjs nock

我正在尝试使用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();
}
Run Code Online (Sandbox Code Playgroud)

测试:

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);
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我收到错误:

console.error node_modules/jsdom/lib/jsdom/virtual-console.js:29错误:交叉原点null禁止

TypeError:网络请求失败

任何想法为什么虚拟控制台抛出这个,因为这只是服务.

Mar*_*ski 14

我找到了一个与CORS相关的问题解决方案.Nock mock应该是:

fetchNockProject = nock($API)
                   .defaultReplyHeaders({ 'access-control-allow-origin': '*' })
                   .get('/projects/1')
                   .reply('200', project);
Run Code Online (Sandbox Code Playgroud)