如何从组件测试中测试ReactJS Flux Action(在Jest中)?

时间:2015-02-18 08:16:31

标签: reactjs reactjs-flux flux jestjs

我有一个组件,只需点击一个按钮就可以调用一个助焊剂动作:

onSend(event) {
  MessageActions.sendMessage(this.state.currentMessage);
};

现在,我希望测试基本上能够模拟按钮点击(我知道该怎么做)。

然后在按钮上单击检查以查看是否" MessageActions.sendMessage"使用给定的字符串调用函数。

如何从测试中访问MessageActions?

我测试的对象称为ChatMessage,但MessageActions是在React.CreateClass代码之外定义的。

我在测试中尝试了以下内容:

var messageActions = require('myactions');
expect(messageActions.sendMessage).toBeCalled();

expect(ChatMessage.MessageActions.sendMessage).toBeCalled();

但没有任何工作,因为它只是说MessageActions未定义。

ReactJS文档有一个(糟糕的)测试商店的例子,但没有关于如何测试组件中使用的动作。

请帮助

1 个答案:

答案 0 :(得分:1)

这应该有效:

expect(MessageActions.sendMessage).toBeCalled();

请务必声明MessageActions

var MessageActions = require('path/to/MessageActions');

我怀疑你得到了未定义的错误,因为你已经忘记了“describe”函数中的上述声明。