gpt4 book ai didi

angular - 如何对私有(private)函数内按钮的单击事件进行单元测试?

转载 作者:行者123 更新时间:2023-12-02 19:04:48 25 4
gpt4 key购买 nike

我在一个服务中有一个私有(private)函数,如下所示。如何为该按钮的单击事件编写单元测试?该按钮位于对话框内。

1)这甚至可以进行单元测试吗?2)既然我已经提到这是在服务内部并且涉及点击事件,那么它是否应该像组件一样进行测试?这意味着我必须设置 TestBed,以便我可以实际单击该按钮,如果是,如何?或者是否有更正确的方法来为其编写单元测试,如果是的话,如何编写?

谢谢!

public callOpenDialog(){
openDialog(formA, dataView, {}, true);
}
private openDialog(formA: FormA, dataView: DataView, placeholder: ViewContainerRef, okToAll: boolean): Observable<ResponseRequiredResult> {
return new Observable<ResponseRequiredResult>(observer => {
let dlgComponent: ResponseRequiredModalFormComponent;
let dialog: DialogRef<ResponseRequiredModalFormComponent>;
const dialogId = 'ResponseRequired';

let buttons = [
{
id: this.lmUniqueIdService.uniqueId([formA.busFormA.name, dialogId, DialogButtonKey.OK]),
text: Locale.translate(DialogButtonKey.OK),
validate : false,
isDefault: true,
click: (e, modal) => {
if (this.validateResponseRequiredForm(formA.busFormA, dlgComponent.formComponent.formModel)) {
dialog.close(<ResponseRequiredResult> {
result: ResponseRequiredDialogResult.RESPONSE_OK,
specFields: formA.busFormA.fields, model: dlgComponent.formComponent.formModel
});
}
}
}
];

dialog = modalDialogService
.modal(ResponseRequiredModalFormComponent, placeholder)
.buttons(buttons)
.title(Locale.translate('ResponseRequired'))
.isAlert(true)
.open();
}

最佳答案

您可以从单元测试中调用私有(private)函数,并且不应依赖于单击事件。

service = TestBed.get(PushNotificationService);
service['openDialog'](a, b, c, d);

只需使用方括号调用私有(private)函数并正常传递参数即可。我在代码库的很多地方都使用过它

关于angular - 如何对私有(private)函数内按钮的单击事件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58092153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com