我正在为几家Flux商店编写单元测试,并遇到一点小麻烦。
我的商店通常是这样构建的:
storeObj = {
...
}
_secretsetterfunction = function (){}
module.exports storeObj
正如您所看到的,由于setter函数位于商店对象之外 - 它无法直接访问。
这提出了一个问题,因为测试/操作商店数据的唯一方法是通过操作 - > 调度程序 - > 事件监听器(技术上可以删除Action),这不是我在单元测试商店时想要经历的事情。
另一种方法是将setter方法实际放在商店对象上 - 但这不是我真正希望做的事情。
有什么想法吗?
答案 0 :(得分:4)
我也有这个问题,使用Jasmine。
我写了一篇博客文章&示例回购有关当您不使用Jest时如何获取对这些私有内部函数的引用:http://bensmithett.com/testing-flux-stores-without-jest/
TL; DR - 使用rewire
答案 1 :(得分:2)
行动实际上是商店的公共场合。您只需验证操作的效果即可完全测试您的商店。
答案 2 :(得分:0)
所以助手团队刚刚在一篇博文中解决了这个问题,尽管他们正在使用他们自己的名为Jest的变体。还是值得一读: