如何使用 angular 对离子选择器进行单元测试
How to unit test ion-picker with angular
我的组件中有一个 ion-picker
,声明为:
const picker = await this.pickerController.create({
buttons: [
{
text: 'Seleccionar',
handler: (selected) => {
this.setDatesPerWeek(selected.week.value);
}
}
],
columns: [
{
name: 'week',
selectedIndex: this.currentWeek - 1,
options: this.setOptionsPicker()
}
],
cssClass: 'pickerWeeks'
});
所以我对组件的创建和存在进行了单元测试 ion-picker
。但是报道显示应该测试按钮“Seleccionar”的处理程序。在我的 spec.ts 中有:
it('check picker present', (done) => {
component.presentPicker();
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(pickerSpy.present).toHaveBeenCalled();
done();
});
});
但是 IDK,如何测试离子选择器中按钮的处理程序。我试图获取按钮并强制单击,但我在按钮的 var 中得到了 null。有人知道如何覆盖这个功能吗?
您可以利用 jasmine 间谍 API 模拟点击选择器按钮。点击后可以查看预期效果
it('set dates when Seleccionar button of picker clicked', async () => {
component.presentPicker();
fixture.detectChanges();
await fixture.whenStable();
const buttons = pickerCtrlSpy.create.calls.first().args[0].buttons;
const selectButton = buttons.find(btn => btn.text === 'Seleccionar');
await selectButton.handler();
expect(this.datePerWeek).toEqual(expectedValue)
});
我的组件中有一个 ion-picker
,声明为:
const picker = await this.pickerController.create({
buttons: [
{
text: 'Seleccionar',
handler: (selected) => {
this.setDatesPerWeek(selected.week.value);
}
}
],
columns: [
{
name: 'week',
selectedIndex: this.currentWeek - 1,
options: this.setOptionsPicker()
}
],
cssClass: 'pickerWeeks'
});
所以我对组件的创建和存在进行了单元测试 ion-picker
。但是报道显示应该测试按钮“Seleccionar”的处理程序。在我的 spec.ts 中有:
it('check picker present', (done) => {
component.presentPicker();
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(pickerSpy.present).toHaveBeenCalled();
done();
});
});
但是 IDK,如何测试离子选择器中按钮的处理程序。我试图获取按钮并强制单击,但我在按钮的 var 中得到了 null。有人知道如何覆盖这个功能吗?
您可以利用 jasmine 间谍 API 模拟点击选择器按钮。点击后可以查看预期效果
it('set dates when Seleccionar button of picker clicked', async () => {
component.presentPicker();
fixture.detectChanges();
await fixture.whenStable();
const buttons = pickerCtrlSpy.create.calls.first().args[0].buttons;
const selectButton = buttons.find(btn => btn.text === 'Seleccionar');
await selectButton.handler();
expect(this.datePerWeek).toEqual(expectedValue)
});