2011-12-05 22 views
7

Tôi đã sau đây thiết lập trong QUnit:QUnit hành vi kỳ lạ với vật cố, kiểm tra luân phiên thất bại và đi qua

/* Dozen or so previous tests here */ 

test("Test some markup generation", function() { 

    $('#qunit-fixture').plugin(); // jQuery plugin: Generates a table 

    var rows = $('#qunit-fixture table tbody tr'); 
    count = rows.length; // Count the rows 
    console.log(count); 

    equal(count, "96", "Expect the number of rows to be 96"); 
}); 

Khi nó chạy, hoặc khi tôi làm mới trình duyệt nó luân phiên không thử nghiệm này cho thấy count = 0, hoặc vượt qua điều này và thất bại tất cả các bài kiểm tra trước đó. Không có biến toàn cục nào được xác định bên ngoài các thử nghiệm. Nếu tôi thiết lập đếm đến 96 bằng tay mọi thứ đều tốt, hoặc nếu tôi loại bỏ bài kiểm tra này, hoặc tất cả các bài kiểm tra trước đó, mọi thứ đều trôi qua. Tôi tự hỏi nếu có ai đó đã chạy vào hành vi này? Tôi đã sử dụng QUnit khá một chút và đã không gặp phải điều này trước đây.

+2

Tôi không chắc chắn nếu điều đó có thể là nguyên nhân, nhưng nó sẽ ít nhất là sạch hơn để khai báo đếm như là một biến địa phương ở đây. Có thể nó đụng độ với một số biến khác được sử dụng bởi qunit. –

+0

Xem mã nguồn, sử dụng rất nhiều tham chiếu đến 'đếm' và tự kiểm tra nếu có thể có xung đột: http://code.jquery.com/jquery-1.7.1.js –

+0

Ngoài ra còn có 'tính năng' cho phép bạn nhấp vào một thử nghiệm trong báo cáo thử nghiệm, để chỉ chọn thử nghiệm đó để chạy. Đã cho tôi một lần nửa giờ để tìm hiểu lý do tại sao nó trông giống như tôi đã chỉ có một thử nghiệm ;-) –

Trả lời

8

Ok, tôi đã tìm ra vấn đề và nó phải làm gì khi sử dụng yếu tố cố định được cung cấp của chúng. Các tài liệu QUnit khẳng định rằng:

Yếu tố # QUnit-vật cố có thể được sử dụng để cung cấp và thao tác đánh dấu kiểm tra, và sẽ được tự động thiết lập lại sau mỗi lần kiểm tra

Bằng cách thiết lập lại họ có nghĩa là nó sẽ chỉ được "làm trống", không có bất kỳ thuộc tính bổ sung nào mà bạn có thể đã thêm vào để được đặt lại. Nhìn vào các câu hỏi của tôi, bạn có thể thấy tôi đã áp dụng các plugin trực tiếp vào các vật cố định và tất cả các thuộc tính được thêm vào được treo xung quanh cho các thử nghiệm tiếp theo gây ra những vấn đề này.

Trước mỗi bài kiểm tra bây giờ tôi chèn một yếu tố mới vào vật cố và nhắm mục tiêu đó với plugin:

$('#qunit-fixture').append('<div id="target"></div>'); 
$('#target').plugin(); 

yếu tố bổ sung này sau đó được xóa một cách chính xác sau mỗi lần kiểm tra. Trong khi điều này có vẻ hiển nhiên bây giờ nó đã không ngay lập tức rõ ràng với tôi từ các tài liệu hướng dẫn.

UPDATE:

Change nộp và kéo vào QUnit vào 14/2/2012: https://github.com/jquery/qunit/pull/195

Cảm ơn, Jörn

+1

Thay đổi đã được gửi và kéo, nhưng đã được hoàn nguyên vào ngày 29/2/2012. Tất cả điều đó có nghĩa là giải pháp trên không đính kèm các plugin và các thuộc tính vào bản thân qunit-fixture vẫn là cần thiết. – purgatory101

Các vấn đề liên quan