【发布时间】:2018-06-13 15:27:51
【问题描述】:
问题
我有一个按钮组件,它接受一个承诺并禁用按钮,直到承诺解决,我想为此功能编写一个单元测试。
我的代码
我的按钮组件有一个承诺的输入
/**
* A single promise that triggers the busy state until it resolves
*/
@Input()
public promise: Promise<any>;
在 ngOnChanges 中我聆听承诺
/**
* Enable button busy state until promise resolves
*/
if (changes && changes.promise && changes.promise.currentValue) {
this.busyUntilPromiseResolves(changes.promise.currentValue);
}
然后我存储了一个活跃的 promise 数组,因此可以传入多个 promise
/**
* Add a promise that will keep the button in a busy state until it resolves
* @param activityProimise
*/
private busyUntilPromiseResolves(activityProimise) {
this.activityPromises.push(activityProimise);
activityProimise.then(() => {
this.activityPromises.splice(this.activityPromises.indexOf(activityProimise), 1);
});
}
最后在我的模板中,如果数组中有任何承诺,我将禁用该按钮。
[disabled]="activityPromises.length > 0"
帮我欧比旺
我一直在涉足并尝试不同的方法来完成这项工作,这是我当前不起作用的测试代码。基本上,我需要在承诺解决之前检查按钮是否被禁用,然后我会想做另一个测试,检查它在承诺解决后是否重新启用。
it('should be disabled when passed a single promise', async((done) => {
let promise;
return promise = new Promise(resolve => {
component.promise = promise;
fixture.detectChanges();
expect(buttonElement.disabled).toBe(true);
return resolve();
});
}));
一如既往,我们将不胜感激,谢谢。
【问题讨论】:
标签: angular unit-testing promise angular-components angular-unit-test