2012-01-15 25 views
12

Tôi đang viết thông số kỹ thuật cho các trường hợp thử nghiệm khác nhau cho Jasmine và QUnit để so sánh chúng và chúng trông giống nhau trước khi tôi cần viết một bài kiểm tra để kiểm tra xem sự kiện có được gắn với phần tử hay không.Có tương tự spyOn trong QUnit không?

tổ chức sự kiện ràng buộc trông giống như

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

page_clicked là một phương pháp riêng nhưng nó đòi hỏi một phương pháp nào của module khác.

Dưới đây là một spec Jasmine:

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

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

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

thử nghiệm này hoạt động. Bây giờ tôi đang cố gắng để viết cùng một bài kiểm tra cho QUnit và không thể tìm thấy bất cứ điều gì tương tự như spyOn. Làm thế nào để viết bài kiểm tra này cho QUnit?

Trả lời

9

Nguyên nhân của nó QUnit không có gián điệp hoặc mocks. Nhưng bạn có thể sử dụng khung công tác mô phỏng Sinon.JS. thử nghiệm của bạn sẽ trông như thế này sử dụng sinon spy:

var spy = sinon.spy(search, 'get_results'); 
sinon.assert.calledOnce(spy); 
+0

Cố gắng để sao chép/dán mã của bạn nhưng 'assert (spy.calledOnce) 'ném' khẳng định không defined' và 'sinon.assert.called (gián điệp)' ném 'dự kiến ​​get_results đã được gọi ít nhất một lần nhưng không bao giờ được gọi là ' –

+0

Ok nó đã được sao chép/dán từ doku doon, tôi đã sửa nó. –

+0

Vẫn không hoạt động. 'dự kiến ​​get_results được gọi một lần nhưng được gọi là 0 lần'. Tôi đặt một cảnh báo sau khi 'get_results' gọi trong' page_clicked' chức năng và cảnh báo nhắc nhở, Jasmine kiểm tra đi nhưng QUnit + SinonJS không. –