多くを得るが、私は好む1は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