Tôi có plugin tự động hoàn thành javascript sử dụng các lớp sau (được viết bằng coffeescript): Truy vấn, Đề xuất, Đề xuấtCollection và Tự động điền. Mỗi lớp trong số này có một đặc tả liên quan được viết bằng Jasmine.Cách hiển thị đối tượng javascript để kiểm tra đơn vị mà không gây ô nhiễm không gian tên chung
Plugin được định nghĩa trong một module, ví dụ:
(function(){
// plugin...
}).call(this);
Điều này ngăn cản các lớp từ ô nhiễm không gian tên toàn cầu, mà còn ẩn chúng từ bất kỳ xét nghiệm (thông số kỹ thuật với hoa nhài, hoặc đơn vị xét nghiệm với cái gì đó như q-đơn vị).
Cách tốt nhất để hiển thị các lớp hoặc đối tượng javascript để thử nghiệm mà không gây ô nhiễm không gian tên chung là gì?
Tôi sẽ trả lời bằng giải pháp mà tôi đã đưa ra, nhưng tôi hy vọng rằng có điều gì đó chuẩn hơn.
Cập nhật: Đã cố gắng Giải pháp của tôi
Bởi vì tôi là một newb với < 100 xp, tôi không thể trả lời câu hỏi của riêng tôi trong 8 giờ. Thay vì chờ đợi tôi sẽ chỉ thêm những gì tôi đã làm ở đây.
Để xác định các lớp này, tôi đã phát minh ra một đối tượng toàn cầu có tên là _test
mà tôi đã phơi bày tất cả các lớp trong để kiểm tra. Ví dụ, trong coffeescript:
class Query
// ...
class Suggestion
// ...
// Use the classes
// Expose the classes for testing
window._test = {
Query: Query
Suggestion: Suggestion
}
Bên trong thông số kỹ thuật của tôi, sau đó, tôi có thể tiết lộ lớp tôi là thử nghiệm:
Query = window._test.Query
describe 'Query', ->
// ...
này có ưu điểm là chỉ đối tượng _test
là bị ô nhiễm, và nó không chắc nó sẽ va chạm với định nghĩa khác của đối tượng này. Tuy nhiên, nó vẫn không sạch sẽ như tôi muốn. Tôi hy vọng một người nào đó sẽ cung cấp một giải pháp tốt hơn.
lẽ phơi bày một số biến nội bộ, chỉ? Ví dụ: 'window.exposedVars = this' (bên trong đóng)? –
Tôi vừa thêm giải pháp đề xuất của tôi một vài giây sau khi bạn đăng bài này. Nó có nằm dọc theo những gì bạn đang đề xuất không? – Mitch
Plugin của bạn hữu ích như thế nào và vẫn không thêm bất kỳ thứ gì vào không gian tên chung? Tôi thực sự tò mò, có lẽ bạn đang làm một cái gì đó tôi không biết. Theo như tôi có thể nói, luôn có ít nhất một đối tượng được đưa vào không gian tên chung. –