助焊剂储存 - 单元测试

时间:2014-09-20 21:07:52

标签: jasmine reactjs reactjs-flux

我正在为几家Flux商店编写单元测试,并遇到一点小麻烦。

我的商店通常是这样构建的:

storeObj = {
...
}

_secretsetterfunction = function (){}

module.exports storeObj

正如您所看到的,由于setter函数位于商店对象之外 - 它无法直接访问。

这提出了一个问题,因为测试/操作商店数据的唯一方法是通过操作 - > 调度程序 - > 事件监听器(技术上可以删除Action),这不是我在单元测试商店时想要经历的事情。

另一种方法是将setter方法实际放在商店对象上 - 但这不是我真正希望做的事情。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我也有这个问题,使用Jasmine。

我写了一篇博客文章&示例回购有关当您不使用Jest时如何获取对这些私有内部函数的引用:http://bensmithett.com/testing-flux-stores-without-jest/

TL; DR - 使用rewire

答案 1 :(得分:2)

行动实际上是商店的公共场合。您只需验证操作的效果即可完全测试您的商店。

答案 2 :(得分:0)

所以助手团队刚刚在一篇博文中解决了这个问题,尽管他们正在使用他们自己的名为Jest的变体。还是值得一读:

http://facebook.github.io/react/blog/2014/09/24/testing-flux-applications.html?utm_source=javascriptweekly&utm_medium=email