12

我正在为 Jasmine 和 QUnit 的不同测试用例编写规范以比较它们,并且在我需要编写测试以检查事件是否绑定到元素之前它们看起来相同。

事件绑定看起来像

$('.page').live('click', function() { page_clicked( $(this) ) });

page_clicked是一个私有方法,但它需要另一个模块的公共方法。

这是茉莉花规格:

it('should bind events to pages', function() {
    spyOn( search, 'get_results' );

    $('.page:eq(0)').trigger('click');

    expect( search.get_results ).toHaveBeenCalled();
});

这个测试有效。现在我正在尝试为 QUnit 编写相同的测试,但找不到类似于 spyOn 的任何东西。如何为 QUnit 编写这个测试?

4

1 回答 1

9

它的原因 QUnit 没有间谍或模拟。但是您可以使用Sinon.JS 模拟框架。使用sinon spy的测试应该如下所示:

var spy = sinon.spy(search, 'get_results');
sinon.assert.calledOnce(spy);
于 2012-01-15T13:01:49.713 回答