gpt4 book ai didi

node.js - nock 没有拦截我的请求

转载 作者:搜寻专家 更新时间:2023-10-31 22:21:07 24 4
gpt4 key购买 nike

我正在尝试使用业力服务器和诺克创建一些基本测试。似乎 nock 根本没有拦截我的请求,有人知道吗?我无法弄清楚缺少什么。我仍然得到真实的数据。

nock('https://api.github.com/users/' + username).log(console.log)
.get('/')
.query(true)
.reply(400, {
statusMessage: 'Bad Request',
foo: 'foo'
})

http.get('https://api.github.com/users/' + username, function(res) {
console.log('res', res)
})

我还添加了这个中间件

const middlewares = [thunk];
const mockStore = configureStore(middlewares);

====== 6 月 6 日更新 ======

使用 react-redux 的整个流程这是我的测试:

import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import axios from 'axios';
import expect from 'expect';
import * as actions from 'actions/test-actions'
import * as types from 'types';
import nock from 'nock'
import { username } from 'constansts'

const middlewares = [thunk];
const mockStore = configureStore(middlewares);

describe('Asynchronous actions', () => {
it('Basic example', done => {
nock('https://api.github.com')
.get('/users/' + username)
.reply(400, {
statusMessage: 'Bad Request',
foo: 'foo'
})

var expectedActions = []
let store = mockStore([], expectedActions, done)

store.dispatch(actions.testRequest())
.then(() => {
console.log('store.getActions() => ', store.getActions())
})
.then(done).catch((err) => {
console.log('ERROR==>', err)
done()
})
})
})

这是 Action

export function testRequest () {
return axios.get('https://api.github.com/users/' + username)
.then(function (res) {
console.log('response =>', res.status)
})
.catch(function (err) {
console.log('error =>', err)
})
}

res.status 是 200,即使我使用 nock 更改为 400

最佳答案

这是一个老问题,但我相信答案是您需要设置 axios http 适配器:

import axios from 'axios';
axios.defaults.adapter = require('axios/lib/adapters/http');

当使用 jest 运行测试时,您通常会在“类似浏览器”的环境中运行它们。要让 axios 使用 Node http 库,您需要明确告诉它使用 http 适配器。

https://github.com/axios/axios/tree/master/lib/adapters

关于node.js - nock 没有拦截我的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com