1
當試圖使用Jest的.toHaveBeenCalledWith()
方法測試傳遞給該函數的參數時,如果使用ImmutableJS庫處理不可變數據結構,則測試失敗。測試失敗,類似這樣的消息:使用不可變數據結構時,Jest模擬函數參數不匹配
Expected mock function to have been called with:
[{"foo": true, "bar": "baz"}]
But it was called with:
[{"foo": true, "bar": "baz"}]
測試類似於這樣:
const expectedArgs = Map({
foo: true,
bar: 'baz'
});
const foo = jest.fn();
bar();
expect(foo).toHaveBeenCalledWith(expectedArgs);
而類似這樣的功能:
const bar =() => {
const baz = Map({});
const bazModified = baz.set('foo', true).set('bar', 'baz');
foo(bazModified);
}
我意識到,如果我以這種方式傳遞參數一切正常:
const bar =() => {
const baz = Map({
foo: true,
bar: 'baz'
});
foo(baz);
}
問題是,這是我的函數的邏輯大大簡化,我不得不使用.set來構造對象。有沒有人知道爲什麼.set方法無法正確評估?