我有一个ember js控制器,其中包含一个采用模型的动作。 如何编写单元测试来测试返回承诺的操作? deleteUser(模型) { model.destroyRecord()。then(()=> this.transitionToRoute(' posts')); }
答案 0 :(得分:0)
wait()函数听起来像你想要的。不确定它是否适用于承诺,因为它没有在文档的这一部分中提到承诺。无论如何,可能想要试一试。
来自Ember docs(https://guides.emberjs.com/v2.12.0/testing/testing-components/):
import { moduleForComponent, test } from 'ember-qunit';
import wait from 'ember-test-helpers/wait';
import hbs from 'htmlbars-inline-precompile';
moduleForComponent('delayed-typeahead', 'Integration | Component | delayed typeahead', {
integration: true
});
const stubResults = [
{ name: 'result 1' },
{ name: 'result 2' }
];
test('should render results after typing a term', function(assert) {
assert.expect(2);
this.set('results', []);
this.set('fetchResults', (value) => {
assert.equal(value, 'test', 'fetch closure action called with search value');
this.set('results', stubResults);
});
this.render(hbs`{{delayed-typeahead fetchResults=fetchResults results=results}}`);
this.$('input').val('test');
this.$('input').trigger('keyup');
return wait().then(() => {
assert.equal(this.$('.result').length, 2, 'two results rendered');
});
});
编辑:上面的例子来自集成测试...不确定这是你的想法。请注意,您还可以查看andThen助手。也许给我们一些关于你的想法的更多信息?