根据此回复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在检查记录中的一些更精细的属性之前已经填充了。
答案 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
。保存后,您还可以检查isError
,this.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