【发布时间】:2015-10-07 18:20:52
【问题描述】:
如何从导入的动作模块调用函数?这是我的组件
class Task extends Component {
handleClick(e) {
e.preventDefault();
Actions.returnTask(this.props.id);
}
render() {...}
}
以及如下所示的测试:
jest.dontMock('./Task');
jest.dontMock('./Actions');
describe('Tasks', function() {
let renderedComponent;
let mockReturnTask;
let TaskActions;
beforeEach(function() {
renderedComponent = TestUtils.renderIntoDocument(
<Task task={testTask} key={1} />
);
Actions = require('./Actions');
mockReturnTask = jest.genMockFn();
Actions.returnTask = mockReturnTask;
});
it('should call a returnTask action on Actions', function() {
renderedComponent.handleClick(event);
expect(mockReturnTask).toBeCalled();
});
});
运行我的测试时,它告诉我该函数没有被调用。如果我这样做expect(Actions.returnTask).toBeCalled();,我会收到一条错误消息,指出toBeCalledWith() should be used on a mock function 错误。如何在外部操作上模拟一个函数并检查它是否在我的测试中被调用?我觉得我上面的方法应该可行。
【问题讨论】:
标签: unit-testing reactjs reactjs-flux jestjs