我正在将 Sinon 与 Ember.js 并发任务一起使用,并尝试在测试中存根该任务。
代码如下所示:
组件文件:.ts
import Component from '@glimmer/component';
import { TaskGenerator, TaskInstance } from 'ember-concurrency';
import { task } from 'ember-concurrency-decorators';
import { taskFor } from 'ember-concurrency-ts';
export default class Container extends Component<Args> {
@task *myTask(): TaskGenerator<Data> {
const response: Data = yield json('someURL'); //json() returns a JSON object from a request to someURL
return response;
}
get task(): TaskInstance<Data> | null {
const task = taskFor(this.myTask);
return task.last ? task.last : task.perform();
}
@action
someMethod(): void {
const task = taskFor(this.myTask);
task.perform();
}
}
组件测试文件中的相关测试:
...
module('Integration | Component | container', function(hooks){
test('some test', async function(this: Context, assert) {
await render(hbs`
<Container @someMethod={{@someArgument}} as |c| >
// some code that uses c
</Container>
`);
}
如何存根myTask任务?我基本上希望拥有它,以便我能够手动控制来自 myTask 的响应,这样就不必在测试中做出 HTTP 响应。
慕的地6264312
开心每一天1111
守着星空守着你
相关分类