gpt4 book ai didi

javascript - Angular 单元测试: How to check if the spied upon method is getting the correct argument?

转载 作者:行者123 更新时间:2023-12-02 23:22:00 25 4
gpt4 key购买 nike

假设我们有一个名为 Method1 的方法,它接受和对象 obj={ 姓名:'jack',电话:'123' }

如您所见,这里有两个属性:姓名和电话。

方法 1 在内部调用方法 2,并以 obj.phone 为参数。

FIDDLE

export class AppComponent {  
method1(obj: any) {
this.method2(obj.phone);
}
method2(val) {

}
}

我想检查 method2 是否被调用,以及是否传递了正确的参数。在这种情况下,这将始终是 obj 的 Phone 属性。

callFake() 是解决方案吗?我该怎么做?

不起作用的代码:

it('should do something', () => {
let obj = { name: 'jack', phone: '123' }
let passedarg;
let spy = spyOn(subject, 'method2').and.callFake(function (arg) {
passedarg = arg;
});
expect(obj).toHaveBeenCalledWith(obj.phone);
});

最佳答案

我不确定您当前正在测试什么。您是否检查是否使用作为参数传递给 method1 的对象的 phone 属性来调用 method2

在当前的测试中,您监视 method2 并提供模拟实现 (callFake)。然后,您断言已使用 javascript 对象 obj 所拥有的 phone 属性调用该对象。您需要调用函数本身 subject.method1(obj) 然后您可以查看是否调用了 spy 。

如果这就是您想要实现的目标,我认为这可能是您正在寻找的:

  it('should do something', () => {
let obj = { name: 'jack', phone: '123' };
spyOn(subject, 'method2');
subject.method1(obj);
expect(subject.method2).toHaveBeenCalledWith(obj.phone);
});

关于javascript - Angular 单元测试: How to check if the spied upon method is getting the correct argument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56908129/

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