2013-09-05 25 views
7

Cho Ember đạt được số 1.0.0 gần đây, tôi muốn bắt đầu sử dụng nó với các thử nghiệm. Tôi đang sử dụng Yeoman 1.0 với Karma. Tôi muốn các mô hình thử nghiệm đơn vị nhưng tôi thấy rất khó để hoàn thành cách ly.Thử nghiệm đơn vị trong Ember.js

Ví dụ tôi có bây giờ là:

describe("Expense", function() { 
    return it("has a computed property called `explained`", function() { 
    var expense = App.Expense.create({ 
     name: "My first expense", 
     value: 34 
    }); 
    return expect(expense.get("explained")).to.equal("My first expense -- 34"); 
    }); 
}); 

Tính đến 1.0.0, tôi nhận được lỗi sau:

Error: You should not call `create` on a model. Instead, call 
`store.createRecord` with the attributes you would like to set. 

Làm thế nào tôi nên truy cập vào cửa hàng để tạo ra một trường hợp mô hình? Lý tưởng hơn, làm thế nào tôi có thể đơn giản sinh ra các mô hình như thế này mà không cần đến cửa hàng, liệu có khả thi không? Không có vấn đề gì trong việc sinh sản toàn bộ một ứng dụng chỉ để thử nghiệm một mô hình, IMO.

Cảm ơn bạn.

+1

Chỉ cách tôi có thể nghĩ đến là để tra cứu các cửa hàng thông qua App ___ container __. tra cứu ('store: main'). Có lẽ bạn cũng có thể xem chúng hoạt động như thế nào trong các bài kiểm tra DS.Model dữ liệu ember –

+0

Đối với những người đang tìm kiếm câu trả lời, bản hack này hoạt động. Đánh dấu nó là giải quyết. – josemota

Trả lời

2

Theo nhận xét của @ sly7_7, tìm kiếm cửa hàng bên trong ứng dụng qua App.__container__.lookup('store:main') hoạt động.

+0

Đối với những thứ như vậy, tôi luôn hy vọng có lời khuyên của một thành viên trong nhóm ... nhưng sau tất cả, đây là bài kiểm tra, không phải mã sản xuất, vì vậy tôi nghĩ điều này là đủ tốt –

0

Bạn nên sử dụng this.get ('cửa hàng'). CreateRecord ('chi phí')

Dường như bạn đang sử dụng Ember-Data 1.0.0 beta, mà thay đổi cách hành mọi việc. Bạn nên xem tệp migration.md trong dự án dữ liệu ember.

(Xin lỗi tôi nên đã đọc câu hỏi của bạn tốt hơn một chút - Tôi đang gặp vấn đề tương tự tại thời điểm này và đề nghị chứa giải pháp không làm việc cho tôi - khiến cho trình duyệt để sụp đổ) :(

+0

phát hiện ra rằng giải pháp này thực sự * làm * làm việc cho tôi, nó chỉ là nó cần phải được chạy bên trong chức năng thiết lập của bài kiểm tra của qunit. –

4

đây là mã tối thiểu mà tôi đã sử dụng cho đến nay cho các mô hình kiểm tra đơn vị.

var container, store, expense; 

container = new Ember.Container(); 
container.register('store:main', DS.Store.extend()); 
container.register('model:expense', App.Expense); 
store = container.lookup('store:main'); 

Ember.run(function() { 
    expense = store.createRecord('expense', { 
    name: "My first expense", 
    value: 34 
    }); 
}); 

Dựa trên mã của cửa hàng và the way models are tested inside Ember Data, tôi không nghĩ rằng bạn có thể làm giảm thiết lập của thử nghiệm.