【发布时间】:2016-10-05 08:12:22
【问题描述】:
我正在尝试使用 karma server 和 nock 创建一些基本测试。 似乎 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()
})
})
})
这是行动
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
【问题讨论】:
-
看看:github.com/node-nock/nock/issues/150。尽管我使用的是 axios,但我也无法让我的客户端不点击 nock 服务器。看来它对很多人都不起作用
-
@AlexPanov 谢谢!我还尝试了 fetch-mock 和 isomorphic-fetch,这里也是一样,我仍然可以取回真实数据
标签: node.js testing reactjs karma-mocha nock