使用JEST和nock进行测试导致“禁止交叉来源”无效“#39;

时间:2018-03-20 14:04:49

标签: 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();
}

测试:

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:网络请求失败

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

2 个答案:

答案 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文件。