Redux-Saga 单元测试选择函数

时间:2021-03-11 10:55:14

标签: reactjs redux react-redux redux-saga

我有很多遵循以下格式的选择语句:

const selector = (identifier) => (state) => state.getIn(['ui', identifier, 'object']);

上述选择器和普通选择器的区别在于,我传递了一个填充 getIn 调用的标识符。所以你做的不是yield select(selector)而是yield select(selector(identifier))

这工作正常,但我似乎无法对其进行单元测试。

通常你可以得到预期的效果 select(selector) 并断言等于那个,例如

expect(generator.next().value).to.deep.equal(select(selector));

但是当我尝试传递标识符时这不起作用:

expect(generator.next().value).to.deep.equal(select(selector(identifier)));

我假设它与我调用函数时有关,它返回不同的实例?但我会认为 deep equal 可以解决这个问题。不幸的是 - 我收到的错误消息没有提供任何帮助。

AssertionError: expected { Object (@@redux-saga/IO, SELECT) } to deeply equal { Object (@@redux-saga/IO, SELECT) }

有人试过上面的吗?或关于如何测试这个的建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,您每次都在创建一个新函数,因此您将无法在此处测试相等性 - 即使进行了深入的相等性检查。

替代建议:为什么不从效果中提取选择器函数并针对示例状态执行它,真正测试它的作用