2012-06-21 36 views
5

Tôi có câu hỏi về thử nghiệm một tình huống cụ thể trong Mocha cho Node.js. Giả sử tôi có mã sau trong ứng dụng của mình ...Kiểm tra xem hàm có gọi hàm khác bằng Mocha

function a() { 
    //... 
} 

function b() { 
    //... 
} 

function c() { 
    if(condition) { 
     a(); 
    } else { 
     b(); 
    } 
} 

Nếu tôi đã thử nghiệm hàm c, làm thế nào tôi có thể xác minh hàm hoặc hàm b đã gọi? Có cách nào để làm việc này không?

Trả lời

5

Tôi tìm thấy một giải pháp cho những gì tôi đã cố gắng để làm. Sinon spies có thể giúp xác định xem một chức năng nào đó có được gọi hay không.

1

Đó là những gì code coverage dành cho. May mắn là mocha có hỗ trợ cho việc tận dụng JSCoverage. Tôi sử dụng một makefile trông giống như:

coverage: 
    rm -rf lib-cov 
    jscoverage --no-highlight lib lib-cov 
    @MOCHA_COV=1 mocha --reporter html-cov > coverage.html 
    google-chrome coverage.html 
  1. Dòng đầu tiên loại bỏ (trước) instrumented file javascript (thư mục) cần thiết cho Mocha để hiển thị mã số bảo hiểm.
  2. Dòng thứ hai sử dụng jscoverage để tạo công cụ lib-cov thư mục từ thư mục lib gốc.
  3. Dòng thứ ba được sử dụng để đảm bảo rằng mã nút của tôi biết nó cần chạy mã được thiết kế.
  4. Cuối cùng tôi xem coverage.html trong google-chrome.

Trong tập tin thử nghiệm mocha của tôi, tôi có một dòng giống như:

var BASE_PATH = process.env.MOCHA_COV ? './../lib-cov/' : './../lib/'; 

Bằng cách đó khi MOCHA_COV=1 sau đó mã instrumented sẽ được sử dụng.


Một số liên kết thú vị hơn về bảo hiểm mã:

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