我正在创建一个React应用程序并使用react-boilerplate作为我的基础项目。在了解了Redux、Sagas并重新选择并运行了我的第一个组件之后,我想编写相应的单元测试。但不幸的是,我无法使用相应的选择器对 select 语句进行测试以正确测试:
const selectDomain = () => (state) => state.get('myDomain');
const selectDomainMessage = () => createSelector(selectDomain(), (domain) => domain.get('message'));
function* send() {
const message = yield select(selectDomainMessage());
...
yield put(sentAction(message);
}
describe('send Saga', () => {
const generator = send();
it('should return select descriptor', () => {
let expectedDescriptor = select(selectDomainMessage());
let returnedDescriptor = generator.next().value;
expect(returnedDescriptor).toEqual(expectedDescriptor);
});
});
从我的角度来看,这个测试应该可以工作,但它会失败并显示(不是很有帮助)错误消息:
预期 Object({ @@redux-saga/IO: true, SELECT: Object({ selector: Function, args: [ ] }) }) 等于 Object({ @@redux-saga/IO: true, SELECT: Object( { 选择器:函数,参数:[ ] }) })。
为了更容易重现问题,我创建了一个带有所需环境的JSFiddle 。也许有人可以告诉我我做错了什么。