2010-12-10 41 views
7

Tôi đang viết một ứng dụng phía máy chủ với node.js và muốn bao gồm các bài kiểm tra đơn vị. Một điều tôi đang gặp phải là một cách tốt để kiểm tra đơn vị EventEmittersetInterval/setTimoutSự kiện kiểm tra đơn vị được điều khiển javascript

Tôi có những lựa chọn nào để kiểm tra đơn vị javascript bên máy chủ không đồng bộ?

Tôi biết tôi chỉ có thể đính kèm một người nghe khác vào EventEmitter là chức năng kiểm tra nhưng sau đó làm cách nào để tôi kiểm tra chức năng thử nghiệm có chạy không? một phần của bài kiểm tra đơn vị là để đảm bảo mọi phần của bài kiểm tra đơn vị chạy.

Tôi có thể sử dụng setTimeout cho mình nhưng điều đó có vẻ giống như một giải pháp tấn công.

Nếu trợ giúp ở đây là một số mã kiểm tra tôi đang cố gắng kiểm tra.

... 
function init(param) { 
    ... 
    // run update entities periodically 
    setInterval(this._updateEntities.bind(this, param.containerFull), 
     1000/param.fps); 
    ... 
} 
... 
EntityUpdater.prototype = { 
    ... 
    "_updateEntities": function updateEntitiesfunc(fn) { 
     this._tickEmitter.emit(
      "tick", 
      new dataContainer.DataContainer(this.getEntityCount()) 
      .on(
       "full", fn.bind(this) 
      ) 
     ); 
    }, 
    ... 
} 
... 

(Emit sẽ kích hoạt một sự kiện)

[Chỉnh sửa]

tôi bắt đầu đọc một số các xét nghiệm EvevntEmitter tại https://github.com/ry/node/tree/master/test/simple và nó giúp tôi xem làm thế nào để đi về việc này.

+0

Bạn đã xem bài đăng trên blog này chưa? http://debuggable.com/posts/unit-testing-with-node-js:4b647d40-34e4-435a-a880-3b04cbdd56cb – Tmdean

+0

Vâng tôi đã đọc blog, nó rất hữu ích nhưng chỉ bao gồm một vài điểm. Tôi chỉ mới nhận thấy bài kiểm tra sẽ không xuất hiện cho đến khi vòng lặp kết thúc. Điều này vẫn để lại một sự kiện setTimeout & one time một cách dễ dàng. – Raynos

+0

Tôi bây giờ chỉ nhận thấy khối thoát là đối với thử nghiệm chứ không phải máy chủ. Một cách để chạy một khối mã sau khi tất cả các hành động không đồng bộ kết thúc – Raynos

Trả lời

3

Cá nhân những gì đã giúp tôi nhiều nhất là đọc các bài kiểm tra cho chính node.js (tôi chỉ đọc khoảng một nửa trong số họ).

Điều đó đã cho tôi cảm giác tốt về cách kiểm tra mã không đồng bộ.

Nhờ @tmdean để chỉ ra một ví dụ khác về cách kiểm tra mã không đồng bộ.

3

Tôi khuyên bạn nên kiểm tra Jasmine để kiểm tra. Nó được xây dựng để chạy các thử nghiệm bên ngoài môi trường trình duyệt và cung cấp các cuộc gọi như setTimeout, cung cấp cho bạn một đồng hồ giả để bạn có thể di chuyển thời gian để giải trí bất cứ điều gì liên quan đến thời gian.

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