15

カルマ サーバーとノックを使用していくつかの基本的なテストを作成しようとしています。ノックが私のリクエストをまったく傍受していないようですが、誰か知っていますか? 何が欠けているのかわかりません。私はまだ実際のデータを取得しています。

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 に変更しても

4

4 に答える 4

1

getメソッドでパスを指定する必要があります。

nock('https://api.github.com').log(console.log)
  .get('/users/' + username)
  .query(true)
  .reply(400, {
    statusMessage: 'Bad Request',
    foo: 'foo'
  });
于 2016-06-06T13:57:25.780 に答える
0

ノード環境または Web ブラウザー (PhantomJS など) でテストを実行していますか?

nock を使用するには、ノードで (Jest または mocha を使用して) テストを実行する必要があります。nock はノードの http 動作をオーバーライドするため、ノードでのみ機能し、ブラウザー (PhantomJS など) では機能しません。

テストを実行するには、次のことができます。

于 2016-10-26T19:49:58.280 に答える