Jasmine - TypeError: Cannot read properties of undefined (reading 'find') on argument
Jasmine - TypeError: Cannot read properties of undefined (reading 'find') on argument
我在一个方法的参数中使用 .find() 时遇到问题,在另一个方法中:
this.myObject.myArray = [{...},{...}];
public method1(): void {
method2(this.myObject.myArray);
}
public method2(arrayArg: any[]) {
arrayArg.find(...)
}
我不知道如何用 spyOn 测试它,我已经在 this.myObject 的 beforeEach 中定义如下:
beforeEach(() => {
myObjectMock = {
myArray: []
},
...
};
知道如何告诉 Jasmine 在 method2 arg 中有一个 .find() 方法吗?
编辑:在 Jasmine 中添加了我的测试
it('should ...', () => {
controller.method1();
expect(anotherObject).to.equal('another value');
})
谢谢!
编辑:问题不在 Jasmine 中,而是在代码中,如所选答案所述!
谢谢大家!
要使用 find,您首先需要验证数组不是未定义的,并且大小也大于零。
试试这个:
public method2(arrayArg: any[]) {
if (arrayArg && arrayArg.length > 0) {
arrayArg.find(...)
}
}
我在一个方法的参数中使用 .find() 时遇到问题,在另一个方法中:
this.myObject.myArray = [{...},{...}];
public method1(): void {
method2(this.myObject.myArray);
}
public method2(arrayArg: any[]) {
arrayArg.find(...)
}
我不知道如何用 spyOn 测试它,我已经在 this.myObject 的 beforeEach 中定义如下:
beforeEach(() => {
myObjectMock = {
myArray: []
},
...
};
知道如何告诉 Jasmine 在 method2 arg 中有一个 .find() 方法吗?
编辑:在 Jasmine 中添加了我的测试
it('should ...', () => {
controller.method1();
expect(anotherObject).to.equal('another value');
})
谢谢!
编辑:问题不在 Jasmine 中,而是在代码中,如所选答案所述!
谢谢大家!
要使用 find,您首先需要验证数组不是未定义的,并且大小也大于零。
试试这个:
public method2(arrayArg: any[]) {
if (arrayArg && arrayArg.length > 0) {
arrayArg.find(...)
}
}