2012-10-23 29 views
7

Tôi chỉ mới bắt đầu sử dụng QUnit và gặp sự cố.QUnit sẽ không chạy thử nghiệm

Tôi hiện đang sử dụng TypeScript, trình biên dịch JavaScript. Tôi có các bài kiểm tra của tôi trong các lớp học song song với cấu trúc của các lớp học chính của tôi.

Trong mỗi lớp đó, tôi có hàm gọi là runTests().

Để thực hiện các kiểm tra này, tôi lặp lại và nhận tất cả các lớp kết thúc bằng "Kiểm tra", sau đó gọi hàm runTests() của chúng.

Một ví dụ về runTests() chức năng là:

runTests = function() { 
    QUnit.test("5 = 5", function() { 
    QUnit.ok(5 == 5, "okay"); 
    }); 
} 

Tôi biết tất cả các runTests() làm việc (như trong họ được gọi là, khẳng định vì giao diện điều khiển đầu ra), nhưng ít nhất nó chỉ bao giờ hết chỉ cho tôi một bài kiểm tra. Nó dường như luôn là thử nghiệm cuối cùng được gọi là (ngay cả với nhiều kiểm tra trong cùng runTests()).

Có điều gì lạ khi QUnit đặt lại chính nó, đó là lý do tại sao tôi chỉ nhìn thấy một hoặc tôi thiếu một số thứ cơ bản hơn?

Cảm ơn.


HTML tôi sử dụng ở đây, trong trường hợp quan trọng:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>QUnit Example</title> 
    <link rel="stylesheet" href="qunit-git.css"> 
</head> 
<body> 
<div id="qunit"></div> 
<script src="qunit-1.10.0.js"></script> 
<script src="mycode.js"></script> 
<script type="text/javascript"> 
    function runTest() { 
     var testClasses = getClassesRecurse(Test, []); 

     function getClassesRecurse(target, testClasses) { 
      if (typeof target == 'function' && /Test$/.test(target.name)) { 
       testClasses.push(target); 
      } else if (typeof target == 'object') { 
       for (var i in target) { 
        getClassesRecurse(target[i], testClasses); 
       } 
      } 

      return testClasses; 
     } 

     for (var i in testClasses) { 
      var testObj = new testClasses[i](); 

      if (testObj.runTests) { 
       console.log('Testing: ' + testClasses[i].name, testObj); 
       testObj.runTests(); 
      } 
     } 
    } 

    runTest(); 
</script> 
</body> 
</html> 
+0

jsfiddle, vui lòng. – c69

Trả lời

16

Vì vậy, để trả lời câu hỏi của riêng tôi: có vẻ như tôi đã nhấn "chạy lại" trên một thử nghiệm và nó đã cho thấy tôi chỉ là một thử nghiệm. Loại bỏ chuỗi truy vấn và mọi thứ đều tốt.

Đề xuất cho QUnit: Thêm thư trong phông chữ lớn: "Chỉ chạy một thử nghiệm, nhấp vào đây để chạy tất cả". = p

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