如何在组件集成测试中成功将测试模型添加到商店

时间:2015-11-02 12:09:05

标签: ember.js

根据此回复https://stackoverflow.com/a/29816081/2482265,我有一个使用store: Ember.inject.service()的组件。当用户点击提交在商店中创建的新记录时 - 例如:

var address = {
  line1: this.get('line1'),
  line2: this.get('line2'),
  line3: this.get('line3'),
  town: this.get('town'),
  county: this.get('county'),
  postCode: this.get('postCode'),
  account: account
};

var record = this.get('store').createRecord('address', address);

record.save().then(() => { ... });

我现在想要为这个组件编写集成测试,我填写字段然后触发单击提交按钮,这很好,但是如何检查地址是否已添加到商店?

我看到了提及

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

但是无法解决最后一步给我一个有用的断言。

更新 我的一些组件在record.save().then()中触发了一个操作,因此我可以在正常this.on('assertMyAction', () => { ... })的测试中订阅此操作。但是我的一些组件不需要重新启动操作,所以我需要一种不同的方法来知道store.record.save在检查记录中的一些更精细的属性之前已经填充了。

1 个答案:

答案 0 :(得分:2)

嗯,当您拨打isNew时,记录已添加到商店。我的意思是它应该添加到实时数组中,但属性true设置为let store = lookup('store:main'); assert.equal(store.all('user').get('length'), 1); store.find('user', userId).then((user) => { assert.equal(user.get('isDirty'), false); assert.equal(user.get('isNew'), false); });

如果您想检查记录是否已成功保存,请使用以下内容:

isNew

在保存之前,您应该检查true是否等于isValid。保存后,您还可以检查isErrorthis.container.lookup('service:store');等属性。您可以找到更多可能有用的属性here

Ember 2.0 您需要使用store:main而不是# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x2A70