我如何使用参数测试传奇
How do I test a saga with params
学习如何第一次测试 saga(使用 Jest)。我的传奇需要传递给它的对象包含 userId
但我收到此错误,这显然突出了参数中的差异:
Expected value to equal:
{"@@redux-saga/IO": true, "CALL": {"args": [], "context": null, "fn": [Function getClassrooms]}}
Received:
{"@@redux-saga/IO": true, "CALL": {"args": ["1"], "context": null, "fn": [Function getClassrooms]}}
我有:
import { call, put } from 'redux-saga/effects';
import { theSaga } from './saga.js';
import { apiCall } from './api';
it('should do something', () => {
const data = {
payload: {
userId: '1'
}
};
const generator = theSaga(data);
expect(generator.next().value)
.toEqual(call(apiCall));
});
不确定如何让两者匹配?我尝试将行更改为:
.toEqual(call(apiCall('1'));
但这给出了关于函数不是承诺的错误。
call
是一个 saga 函数,它 returns 一个由 saga 中间件执行的动作。 call
期望函数的参数附加到它的参数,所以 call(apiCall,1)
。这样做的好处是,可以通过简单地走每一步来测试生成器,并检查是否生成了预期的动作。 expect(generator.next().value).toEqual(call(apiCall,1))
也就是说;我认为以这种方式测试生成器没有多大用处。您想要测试 behaviour 而不是 how 生成器的实现。你投入一些东西并期望得到一些东西(在不同的情况下)。测试 expect(generator.next().value).toEqual(call(apiCall,1))
之类的东西就像在说:我实际上编写了我编写的程序,测试证实了这一点。
学习如何第一次测试 saga(使用 Jest)。我的传奇需要传递给它的对象包含 userId
但我收到此错误,这显然突出了参数中的差异:
Expected value to equal:
{"@@redux-saga/IO": true, "CALL": {"args": [], "context": null, "fn": [Function getClassrooms]}}
Received:
{"@@redux-saga/IO": true, "CALL": {"args": ["1"], "context": null, "fn": [Function getClassrooms]}}
我有:
import { call, put } from 'redux-saga/effects';
import { theSaga } from './saga.js';
import { apiCall } from './api';
it('should do something', () => {
const data = {
payload: {
userId: '1'
}
};
const generator = theSaga(data);
expect(generator.next().value)
.toEqual(call(apiCall));
});
不确定如何让两者匹配?我尝试将行更改为:
.toEqual(call(apiCall('1'));
但这给出了关于函数不是承诺的错误。
call
是一个 saga 函数,它 returns 一个由 saga 中间件执行的动作。 call
期望函数的参数附加到它的参数,所以 call(apiCall,1)
。这样做的好处是,可以通过简单地走每一步来测试生成器,并检查是否生成了预期的动作。 expect(generator.next().value).toEqual(call(apiCall,1))
也就是说;我认为以这种方式测试生成器没有多大用处。您想要测试 behaviour 而不是 how 生成器的实现。你投入一些东西并期望得到一些东西(在不同的情况下)。测试 expect(generator.next().value).toEqual(call(apiCall,1))
之类的东西就像在说:我实际上编写了我编写的程序,测试证实了这一点。