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

How do I test a ReactJS Flux Action (in Jest) from the component test?

我有一个组件,单击按钮时会调用通量操作:

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 文档有一个测试商店的(蹩脚的)示例,但没有关于如何测试组件中使用的操作的内容。

请帮忙

这应该有效:

expect(MessageActions.sendMessage).toBeCalled();

只要确保声明MessageActions

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

我怀疑您遇到了未定义的错误,因为您忘记了 "describe" 函数中的上述声明。