2

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

我的商店一般是这样建造的:

storeObj = {
...
}

_secretsetterfunction = function (){}

module.exports storeObj

如您所见,由于 setter 函数位于 store 对象之外 - 它不能直接访问。

这提出了一个问题,因为测试/操作商店数据的唯一方法是通过Action -> Dispatcher ->事件侦听器(从技术上讲,Action 可以被删除),这不是我想要通过的对商店进行单元测试。

另一种方法是将 setter 方法实际放在 store 对象上——但这不是我真正想做的事情。

有什么想法吗?

4

3 回答 3

4

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

我写了一篇关于如何在不使用 Jest 时获取对那些私有内部函数的引用的博客文章和示例存储库:http: //bensmithett.com/testing-flux-stores-without-jest/

TL;DR - 使用重新布线

于 2015-03-01T00:29:44.137 回答
2

Actions 实际上是商店的公共 api。您只需要验证操作的效果即可全面测试您的商店。

于 2014-09-20T21:25:52.097 回答
0

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

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

于 2014-09-26T16:32:58.500 回答