Nock,localhost,port和redux-observable

时间:2017-04-23 19:46:57

标签: testing nock redux-observable

我有一个带有node / express

的模拟api设置

i < arrayOfObjects.commands.length

我正在使用redux-observable来获取json:

http://localhost:8080/api/lyric/

问题是,当我测试时,我使用const fetchLyricEpic = action$ => action$.ofType(FETCH_LYRIC) .mergeMap(action => ajax.getJSON('/api/lyric') .map(response => fetchLyricSuccess(response)) .catch(error => Observable.of(fetchLyricFail(error))) ) 得到api错误而不是200:

nock

我正在尝试按照我在nock文档和问题列表中阅读的内容,但是,我的nock api调用仍然失败。

beforeEach(() => {
  nock.disableNetConnect()
  nock.enableNetConnect('127.0.0.1:3000/')
})

afterEach(() => {
  nock.cleanAll()
  nock.enableNetConnect()
  epicMiddleware.replaceEpic(rootEpic)
})

test('it creates FETCH_SUCCESS when fetching the lyric has been done', () => {
  const payload = {
    status: 200,
    response: {
      'lyric': "Lyric"
    }
  }
  nock('127.0.0.1:3000/')
    .get('/api/lyric')
    .reply(200, payload, {'Content-Type': 'application/json'})

我应该收到Expected value to equal: [{"type": "FETCH_LYRIC"}, {"payload": {"lyric": "Lyric"}, "type": "FETCH_LYRIC_SUCCESS"}] Received: [{"type": "FETCH_LYRIC"}, {"payload": {}, "type": "FETCH_LYRIC_ERROR"}] 而不是我看到:

FETCH_LYRIC_SUCCESS

1 个答案:

答案 0 :(得分:1)

从错误消息中,它听起来与此处描述的问题相同:https://github.com/tmpvar/jsdom/issues/1706

  

我正在开发一个项目,它使用带有jsdom和酶的mocha在Node中的虚拟dom中运行我们的集成测试。现在我正在使用节点6.9.2,一切正常。我尝试使用7.4.0,但运行测试我得到了错误

     

(几乎相同的堆栈跟踪)

如果确实相同,有些人报告说这是Node 7.4.0的一个问题,升级到7.5.0或更高版本就解决了这个问题。