0
我們可以撰寫傳奇在下面的例子中那樣 https://github.com/yelouafi/redux-saga/blob/5a6db57c77141b85b82aa097933ad687aacff8dc/docs/advanced/ComposingSagas.md如何對傳奇組合進行單元測試?
我稱之爲「子傳奇」 loadAssets
從libraryChangeCategory
import * as LibraryActions from 'actions/libraryActions';
import loadAssets from './loadAssets';
export default function* libraryChangeCategory(category) {
yield put(LibraryActions.librarySetCategory(category));
yield put(LibraryActions.librarySetLoading());
yield* loadAssets();
yield put(LibraryActions.libraryResetLoading());
}
和測試兩個第一產量確定。
import libraryChangeCategory from 'sagas/library/changeCategory';
const generator = libraryChangeCategory(LibraryCategories.Backgrounds);
let next;
it('should set category',() => {
next = generator.next();
expect(next.value).toEqual(
put(LibraryActions.librarySetCategory(LibraryCategories.Backgrounds)));
});
但我不想在這裏測試loadAssets
發生器。 我只是想嘲笑它。 但是如何?看來這是不可能的?
function* mockGen() {
yield;
}
let loadAssets = libraryChangeCategory.__get__('loadAssets');
// don't work
loadAssets.__Rewire__(loadAssets.__get__('loadAssets'), mockGen);
// don't work too
spyOn(loadAssets, 'loadAssets').and.callFake(function(st) {
yield;
});