我按照redux.org的基本〔实施例测试异步操作终极版 - 如何利用箭扣测试异步操作
action.js
我的代码是这样的:
import axios from 'axios'
export function getGoodDataStart(){
return{
type: "GOOD_DATA_START"
}
}
export function getGoodDataSuccess(payload){
console.log('success', payload)
return {
type: "GOOD_DATA_SUCCESS",
payload: payload
}
}
export function getGoodDataFail(){
return{
type: "GOOD_DATA_FAIL"
}
}
export function getGoodData(){
return (dispatch) => {
dispatch(getGoodDataStart())
return axios.get('http://www.google.com/list')
.then(response => {
console.log('fake res',response)
dispatch(getGoodDataSuccess (response))
})
.catch(err => {
console.log('fake err',err)
})
}
}
测试.js
import nock from 'nock'
import React from 'react'
import {expect} from 'chai'
import {getGoodData} from 'registerAction'
import configureMockStore from 'redux-mock-store'
import thunk from 'redux-thunk'
const middlewares = [ thunk ]
const mockStore = configureMockStore(middlewares)
describe('Register component',() => {
it('async action', function() {
nock('http://www.google.com')
.get('/list')
.reply(200,'ok!')
const store = mockStore({
myData: '' ,
})
const expected = [
{type: "GOOD_DATA_START"},
{type: "GOOD_DATA_SUCCESS", payload: 'ok!'}
]
return store.dispatch(getGoodData())
.then(() => {
expect(store.getActions()).to.equal(expected)
})
})
})
我现在的问题是,nock没有阻塞请求,它让函数getGoodData使得r eal请求到google.com。我究竟做错了什么?
错误的屏幕截图:
以下是演示:https://github.com/craigcosmo/react-redux-test
安装:NPM我
测试:NPM运行测试
打开URL: http://localhost:5051/webpack-dev-server/
我想可能是因为你有一个尾随'/'在'nock'设置。而不是'nock'('http://example.com/')'do'nock('http://example.com')':) –
删除了'/'仍然没有帮助 –
你确定你正在击中/插入完全相同的端点? –