2012-08-09 33 views
9

Có ai có lời khuyên nào tốt để kiểm tra xem các connectOutlets của tuyến đường đi ember đã thành công chưa?thử nghiệm ember.js connectOutlet

Ví dụ, tôi có các tuyến đường sau:

vault: Ember.Route.extend 
    route: '/vault' 
    connectOutlets: (router, event) -> 
    router.get('applicationController').connectOutlet 'exercises' 
    index: Ember.Route.extend 
    route: '/' 
    connectOutlets: (router, event) -> 
     exercises = WZ.store.find(WZ.Exercise) 
     router.get('exercisesController').connectOutlet 'main', 'exercisesHome', exercises 

Làm thế nào tôi đi về kiểm tra rằng điều này đã có hành vi mong muốn?

tôi có thể kiểm tra currentState.path như thế này:

it 'should transition to vault', -> 
    Ember.run => 
    @router.transitionTo 'vault' 
    expect(@router.getPath('currentState.path')).toEqual 'root.vault' 

Nhưng tôi không nghĩ rằng đây là một thử nghiệm rất tốt.

Trả lời

1

Theo ý kiến ​​của tôi, mã này không đáng được thử nghiệm.

Trước tiên, hãy chính thức xác định một hành vi mong muốn cho mã này:

Khi quá trình chuyển đổi định tuyến để nhà nước 'vault/index', và mọi thứ đều OK, sau đây sẽ xảy ra:

  1. Ember tạo mới Ví dụ về bài tậpHomeView
  2. Ember đặt thuộc tính nội dung của bài tậpHomeController thành danh sách bài tập
  3. Ember kết nối chế độ xem được tạo với ổ cắm chính trong mẫu bài tập ExercisesView

Bạn thấy đấy, tất cả công việc có ý nghĩa được thực hiện bởi Ember. Do đó, nói đúng, không có gì để kiểm tra, vì chúng tôi không kiểm tra mã của bên thứ ba.

Theo ý kiến ​​của tôi, mã này chỉ có một điều mà có thể xứng đáng thử nghiệm: cho dù chúng tôi đang cung cấp đúng dữ liệu cho bộ điều khiển. Thậm chí sau đó, tôi chỉ kiểm tra mã này sau khi tôi đối diện với hành vi sai trái của nó.