2015-10-01 20 views
7

Tôi đang xây dựng một thành phần tương đối thẳng comment-list. Tôi muốn chuyển sang mô hình có thể nhận xét (giả sử là Post) và yêu cầu tạo thành phần, chỉnh sửa, xóa nhận xét. Ngay bây giờ tôi đã vượt qua tất cả các hành động khác nhau và nó cực kỳ giòn.Ember.js: Cách tích hợp các thành phần thử nghiệm tương tác với các mô hình dữ liệu ember

Làm cách nào để tạo một trường hợp thực sự của mô hình Dữ liệu Ember trong thử nghiệm tích hợp thành phần?

suy nghĩ trước mắt của tôi là nhập khẩu các mô hình sau đó .create({}) nó nhưng mà lỗi với use this.store.createRecord() instead

/* jshint expr:true */ 
import { assert } from 'chai'; 
import { describeComponent, it } from 'ember-mocha'; 
import hbs from 'htmlbars-inline-precompile'; 
import Post from 'ownersup-client/post/model'; 

describeComponent('comment-list', 'Integration: CommentListComponent', { 
    integration: true 
    }, 
    function() { 
    it('renders all of the comments', function() { 
     const model = Post.create({ title: 'title' }); 
     model.get('comments').createRecord({ body: 'One Comment' }) 

     this.render(hbs`{{comment-list model=model}}`); 

     assert.lengthOf(this.$('.comment-list-item'), 1); 
    }); 
    } 
); 

Bất cứ ai có bất kỳ suy nghĩ?

Trả lời

5

Bản phát hành mocha embera mới 0.8.4 chứa một cách mới, công khai để tiêm các dịch vụ như cửa hàng. Có một phần hướng dẫn sắp ra mắt với một ví dụ (xem https://github.com/emberjs/guides/blob/master/source/testing/testing-components.md)

về cơ bản, trong beforeEach của bạn, bạn muốn thêm dòng sau: this.inject.service('store');, làm cho các cửa hàng tiếp cận như this.get('store') trong các thử nghiệm của bạn.

Đây là liên kết đến yêu cầu kéo cho thay đổi mới: https://github.com/switchfly/ember-test-helpers/pull/105

+1

** this.inject.service ('store'); cho phép model = this.get ('store'). CreateRecord ('fo'); ** chỉ ném một lỗi cho tôi – SuperUberDuper

7

Trong số tất cả những người trợ giúp thử nghiệm Ember, cửa hàng chỉ có sẵn từ moduleForModel.

Sau đây là cách kiểm tra helper này làm nó (source):

var container = this.container; 
    var store = container.lookup('service:store') || container.lookup('store:main'); 

Bạn có thể làm như vậy trong bài kiểm tra của bạn. Bạn cũng có thể đặt nó vào một người trợ giúp để bạn không phải sao chép-dán rất nhiều.

Lưu ý rằng nó sẽ chỉ hoạt động cho thử nghiệm tích hợp. Bạn có thể biến bất kỳ bài kiểm tra nào thành tích hợp bằng cách khởi động ứng dụng bằng cách sử dụng trình trợ giúp kiểm tra startApp được gói kèm với bản mẫu soạn thảo Ember CLI của bạn.

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