如何从组件测试中测试 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" 函数中的上述声明。
我有一个组件,单击按钮时会调用通量操作:
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" 函数中的上述声明。