【问题标题】:Redux-Saga unit testing select functionRedux-Saga 单元测试选择函数
【发布时间】:2021-03-11 10:55:14
【问题描述】:

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

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)));

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

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

有人试过以上方法吗?或关于如何测试的建议?

谢谢!

【问题讨论】:

  • 这个断言应该失败,因为原因。

标签: reactjs redux react-redux redux-saga


【解决方案1】:

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

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

【讨论】:

  • 我有这样的测试——但在这里我正在测试调用 saga 效果的序列——不幸的是,似乎没有办法做到这一点。
猜你喜欢
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多