Redux Saga单元测试选择功能



我有很多select语句,它们遵循以下格式:

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

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

谢谢!

好吧,您每次都要创建一个新函数,所以您将无法在这里测试相等性,即使进行深度相等性检查也是如此。

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

相关内容

  • 没有找到相关文章

最新更新