2012-01-09 29 views
8

Gần đây chúng tôi đã bắt đầu sử dụng cờ Ember.testing không có giấy tờ trong thông số kỹ thuật hoa nhài của chúng tôi có hiệu quả vô hiệu hóa tính năng chạy tự động chạy vòng. Chúng tôi thấy rằng điều này đòi hỏi chúng ta phải rõ ràng hơn về việc gói mã theo cách thủ công trong các vòng lặp nhưng cũng cho chúng ta sự ổn định hơn trong thông số kỹ thuật của chúng tôi. quan trọng đối với mã đang được thử nghiệm.Có nên đặt Ember.testing = true cho các bài kiểm tra đơn vị không?

Có đường chính thức nào về việc sử dụng tính năng này không? Nó dường như đã có một tác động tích cực trong ứng dụng của chúng tôi nhưng tôi nghi ngờ hầu hết mọi người không nhận thức được nó.

Trả lời

-1

Tôi chưa bao giờ sử dụng cờ Ember.testing. Tôi muốn được quan tâm để biết làm thế nào cho phép nó đã dẫn đến sự ổn định hơn trong thông số kỹ thuật của bạn. Tôi đã thử nghiệm các ứng dụng Ember trong Jasmine mà không gặp bất kỳ vấn đề gì.

Tôi đã thành công sau khi sử dụng bộ kiểm tra Ember Ember.run()Ember.run.sync() khi cần thiết.

+1

Tính ổn định dường như chủ yếu đến từ các nhà phát triển bị buộc phải suy nghĩ về vòng lặp chạy, cách nó liên quan đến mã đang chạy và các xác nhận được thực hiện trên mã đó. Một số lượng lớn các Ember internals dựa vào đó là một vòng lặp chạy hiện tại hoặc họ ném một ngoại lệ do không có một runoroop autorun, thật dễ dàng để xem nơi một spec nên được gói các cuộc gọi đến mã ứng dụng. –

+2

Chúng tôi đã có một số thất bại liên tục do thông số kỹ thuật đôi khi được chuyển đến những nơi mà tôi nghĩ rằng họ nên đã thất bại một cách nhất quán. Đặt Ember.testing = true đảm bảo rằng các thông số kỹ thuật này luôn thất bại. –

7

Có, bạn chắc chắn nên đặt Ember.testing = true trong các thử nghiệm của mình.

Nếu không có Ember.testing, runloops được lên lịch tự động với setTimeout, đó là nơi bạn không nhận được sự bất ổn.

Lưu ý: Tại thời điểm này, khi bạn kích hoạt Ember.testing, bạn nhất thiết phải kết thúc tiền tố nhiều của các dòng trong mã thử nghiệm của bạn với Em.run =>, như

Em.run => obj.set('someProperty', true) 

Nếu bạn quên, nó sẽ khiếu nại ầm ĩ, hoặc thuộc tính/trạng thái ứng dụng sẽ không được cập nhật khi bạn cố chạy xác nhận chống lại nó.

Có thể điều này sẽ được cải thiện một số ngày, nhưng hiện tại không có gì phải lo lắng về việc mã kiểm tra của bạn có được gọi bằng số run hay không.

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