Sau một đoạn phim ngắn lãng mạn với mô hình mô-đun tiết lộ, tôi đã nhận ra một thiết lập lại khi nói đến các mô-đun thử nghiệm đơn vị. Tuy nhiên, tôi không thể quyết định xem đó có phải là phương pháp tiếp cận của tôi để thử nghiệm một mô-đun hay liệu có một số dạng công việc xung quanh hay không.Tiết lộ mô hình mô-đun - Kiểm tra đơn vị với Jasmine
Xét đoạn mã sau:
var myWonderfulModule = (function() {
function publicMethodA (condition) {
if(condition === 'b') {
publicMethodB();
}
}
function publicMethodB() {
// ...
}
return {
methodA : publicMethodA,
methodB : publicMethodB
}
}());
Nếu tôi muốn kiểm tra (sử dụng Jasmine) những con đường khác nhau dẫn qua publicMethodA để publicMethodB. Tôi có thể viết một bài kiểm tra nhỏ như vậy:
it("should make a call to publicMethodB when condition is 'b'", function() {
spyOn(myWonderfulModule , 'publicMethodB');
myWonderfulModule.publicMethodA('b');
expect(myWonderfulModule.publicMethodB).toHaveBeenCalled();
});
Nếu tôi hiểu chính xác, có một bản sao của PublicMethodB trong phần đóng không thể thay đổi được. Thậm chí nếu tôi thay đổi myWonderfulModule.publicMethodB sau:
myWonderfulModule.publicMethodB = undefined;
gọi myWonderfulModule.publicMethodA
vẫn sẽ chạy phiên bản gốc của B.
Ví dụ trên là tất nhiên đơn giản nhưng có rất nhiều kịch bản tôi có thể nghĩ về nơi nó sẽ thuận tiện cho các đường dẫn điều kiện thử nghiệm đơn vị thông qua một phương thức.
Đây có phải là hạn chế của mô hình mô-đun tiết lộ hoặc đơn giản là lạm dụng thử nghiệm đơn vị không? Nếu không phải là những gì xung quanh có sẵn cho tôi? Tôi đang xem xét di chuyển đến một cái gì đó như RequireJS hoặc quay trở lại mã phi mô-đun.
Bất kỳ lời khuyên nào được đánh giá cao!