很多方式來測試這一點,但我更喜歡的一種是通過間諜/使用ember-sinon磕碰。
假設你有這樣的動作,用於創建和保存記錄:
import Route from 'ember-route';
export default Route.extend({
actions: {
createAndSaveTheRecord() {
this.store.createRecord('dummy_model', {
id: 'dummy',
name: 'dummy'
}).save();
}
}
});
你可以有一個測試,看起來像這樣:
import sinon from 'sinon';
test('should create a record', function(assert) {
assert.expect(1);
// Arrange
let stub = sinon.stub().returns({save: sinon.stub()});
let route = this.subject({store: {createRecord: stub}});
// Act
route.send('createAndSaveTheRecord');
// Assert
assert.ok(stub.calledWith('dummy_model', {id: 'dummy', name: 'dummy'}));
});
test('should save the created record', function(assert) {
assert.expect(1);
// Arrange
let spy = sinon.spy();
let route = this.subject({
store: {
createRecord: sinon.stub().returns({
save: spy
})
}
});
// Act
route.send('createAndSaveTheRecord');
// Assert
assert.ok(spy.calledOnce);
});
你並不需要在單元中使用了灰燼數據測試創建記錄。你可以模擬商店來返回與你的模型具有相同屬性的Ember.Object。 –
我在實踐中並不反對。我認爲我真正想要的是一種測試的好方法,並確保我的模型配置正確,以生成正確的端點。 – user2296332