ノックを使用してReduxアクションの作成者をテストしています。私がオフラインになると、Axiosを使用したHTTPリクエストが成功しなかったという意味の失敗の約束が得られます。私がオンラインになると、それは動作します。ノックはインターネット接続がある場合にのみ機能しますか?
ノックはインターネットに接続されている場合にのみ機能しますか?
アクションCreatorは、アクションの作成者のための
export const fetchSomething = (id) => {
return dispatch => {
dispatch({
type: FETCH_SOMETHING_LOADING
});
return axios.get(`${SOMEWHERE}/something?id=${id}`)
.then(response => {
return dispatch({
type: FETCH_SOMETHING_SUCCESS,
payload: response.data
});
})
.catch(error => {
return dispatch({
type: FETCH_SOMETHING_FAILURE
});
});
};
};
冗談テスト私の知る限りでは(矢筈のv9.0.2)
test('should dispatch success action type if data is fetched successfully',() => {
// Need this in order for axios to work with nock
axios.defaults.adapter = require('axios/lib/adapters/http');
nock(SOMEWHERE)
.get('/something?id=123')
.reply(200, someFakeObject);
thunk = fetchSomething(123);
return thunk(dispatch)
.then(() => {
expect(dispatch.mock.calls[1][0].type).toBe('FETCH_SOMETHING_SUCCESS');
});
});
私はアクシオを使って自分のアクションクリエータでHTTP呼び出しを行います。テストのために、私はJestを使ってnockを呼び出してインターセプタを設定します。インターセプタはまったく使用されていないようです。オフライン(またはnock.disableNetConnect()を呼び出す)に行くと、私のaxios.getは失敗し、キャッチブロックに移動します。 – nbkhope
テストケースがあるように質問を編集できますか? –