2017-11-14 24 views
0

私のアプリケーションのテストを書き始めました。私はredux非同期クリエータのテストを作成しようとしています。冗談でredux非同期アクションクリエーターをテストする

問題は、私がテストを実行したときに、私は、エラー、次の取得です:

は、すべてのユーザー>ディスパッチアクションloadUsersSuccess

アクションが未定義 『タイプ』プロパティを持っていない可能性を取得します。あなたは定数のスペルミスをしましたか?アクション:定義されていません

すべてのアクションは型定数を定義していますので、何が問題になるのか理解できません。

const LOAD_ALL_USERS_SUCCESS = "src/containers/User/LOAD_ALL_USERS_SUCCESS"; 
const LOAD_ALL_USERS_FAILURE = "src/containers/User/LOAD_ALL_USERS_FAILURE"; 

//action creators 
    export function loadUsersSuccess(users) { 
     return { 
     type: LOAD_ALL_USERS_SUCCESS, 
     payload: users 
     }; 
    } 

    export function loadUsersFailure(error) { 
     return { 
     type: LOAD_ALL_USERS_FAILURE, 
     payload: error 
     }; 
    } 

import nock from "nock"; 
import { loadUsersSuccess, loadUsersFailure } from "./ducks"; 
import configureStore from "redux-mock-store"; 

const middlewares = []; 

const mockStore = configureStore(middlewares); 

const LOAD_ALL_USERS_SUCCESS = "src/containers/User/LOAD_ALL_USERS_SUCCESS"; 
const LOAD_ALL_USERS_FAILURE = "src/containers/User/LOAD_ALL_USERS_FAILURE"; 

const users = [ 
    { 
    first_name: "Emlynne", 
    last_name: "Spellacy", 
    email: "[email protected]", 
    gender: "Female", 
    age: 1965, 
    country: "Indonesia" 
    }, 
    { 
    first_name: "Alie", 
    last_name: "Dalrymple", 
    email: "[email protected]", 
    gender: "Female", 
    age: 1976, 
    country: "Pakistan" 
    } 
]; 

function fetchData() { 
    return async (dispatch) => { 
    try { 
     const { data } = await axios.get("/users"); 
     dispatch(loadUsersSuccess(data)); 
    } catch (error) { 
     dispatch(loadUsersFailure(error)); 
    } 
    }; 
} 

describe("Fetch all users",() => { 
    afterEach(() => { 
    nock.cleanAll() 
    }) 
    test("Should load all Users",() => { 
    nock("http://localhost:8000") 
     .get("api/users") 
     .reply(200, users); 

    const expectedAction = [ 
     { 
     type: LOAD_ALL_USERS_SUCCESS, 
     payload: users 
     }, 
     { 
     type: LOAD_ALL_USERS_FAILURE, 
     payload: "error" 
     } 
    ]; 
    const store = mockStore({}); 

    return store.dispatch(fetchData()).then(() => { 
     expect(store.getActions()).toEqual(expectedAction); 
    }); 
    }); 
}); 

答えて

1

問題は、ディスパッチ関数が存在しなかったということでした。ですから、私は次の行を追加する必要がありました。

import thunk from "redux-thunk"; 

const middlewares = [thunk];