Jasmine React Spy没有被调用?

时间:2015-12-03 18:24:01

标签: reactjs jasmine

我是茉莉花新手测试的新手,这让我发疯。

我正在尝试测试下面的简单按钮。但是间谍没有用。

    it('fires the clearTags handler', function() {

    var handler = jasmine.createSpy();

    var element = ReactTest.renderIntoDocument(
        React.createElement(SomeComponent)); 

    spyOn(element,'clearTags')

    var clearTagsLink = ReactTest.findRenderedDOMComponentWithClass(element, 'clear-tags-link');

    ReactTest.Simulate.click(clearTagsLink);

    expect(handler).toHaveBeenCalled();
});

我收到错误预期间谍未知被调用。有任何想法吗?我尝试过使用.and.callThrough(),但这也不起作用。

1 个答案:

答案 0 :(得分:1)

间谍通常被置于方法调用上。在被监视的方法中进行任何类型的方法调用,除非你像你一样附加and.callThrough,否则Jasmine将执行。但是,您将间谍附加到变量而不是React库中的方法,而您似乎想要这样做。

如果我纠正了,我会认为你会想要设置你的间谍;

spyOn(React, 'createElement');
expect(React.createElement).toHaveBeenCalled();

对于更强大的测试,您可能希望使用jasmine toHaveBeenCalledWith("传入参数")您希望它被调用。