這裏是一些上下文。 我正在使用React和Immutable.js編寫一個使用ES6編寫的項目。 我使用Babel和webpack。使用Immutable.js進行摩卡測試失敗時與Karma運行
我使用Mocha,Chai和jsdom編寫了一些單元測試,以便它們可以在瀏覽器之外執行。
問題是,一些組件正在使用像需要圖像的東西。 這個東西是由webpack通過特定的加載器來處理的。
因此,在終端中運行測試時,它們會因爲這些未預料到的要求而失敗。
我發現如何通過使用Karma(留下在瀏覽器外部運行測試的能力)修復此問題並在運行測試之前編譯源代碼,並使其成爲webpack配置而忽略圖像加載器(使用null-裝載機)。
在這一點上,測試通過Karma運行,但其中一些失敗,而當它們通過終端運行時它們通過(我評論了哪些行有需要的東西,僅用於測試目的)。
失敗的測試都與Immutable.js有關,這意味着我試圖測試兩個不可變對象的相等性。
下面是測試的爲例:
it('handles SET_STATE',() => {
const initialState = Map();
const action = {
type : 'SET_STATE',
state : Map({
vote : Map({
pair : List.of('Trainspotting', '28 Days Later'),
tally : Map({ 'Trainspotting' : 1 })
})
})
};
const nextState = reducer(initialState, action);
expect(nextState).to.equal(fromJS({
vote: {
pair: ['Trainspotting', '28 Days Later'],
tally: { 'Trainspotting': 1 }
}
}));
});
的失敗給了這樣的事情:
1) handles SET_STATE
reducer
AssertionError: expected { Object (size, _root, ...) } to equal { Object (size, _root, ...) }
at Context.<anonymous> (/Users/boris_louboff/Labs/VotingApp/voting-client/test/tests.bundle.js:36413:42 <- webpack:///test/reducer.spec.js:21:29)
所有這一切都沒有相關的測試不可改變的東西都超過了其他測試。
如果有人對什麼可以解決這個問題有什麼想法,那就太棒了! 謝謝。
好吧,抱歉這個誤導性的信息......有件事我完全忘了這是與Node環境一起運行...... chai-immutable模塊!!!它正在做預期工作的工作!我試圖使它與Karma版本一起工作... – websilone