嗨,我有一个功能,我想单元测试。这是我的职责。
let docProcess: IDocProcess;
public onCalling(args) {
if (this.docProcess.viewMode) {
this.makeCalls(args);
}
}
这个IDocProcess是一个接口:
export interface IDocProcess {
viewMode: boolean;
editMode: boolean;
deleteMode: boolean;
}
我想对上面的功能进行单元测试。如果我将docProcess.viewMode作为true传递,则应该调用makeCalls(args)函数。如果为false,则不能调用该函数。
以下是我的单元测试代码:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [CallsComponent],
providers: [
MockData
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(CallsComponent);
component = fixture.componentInstance;
});
it('should call makeCalls() only on View Mode', () => {
component.docProcess.viewMode = true;
fixture.detectChanges();
component.onCalling(mockArgsData);
expect(component.makeCalls).toHaveBeenCalled();
但是测试结果失败了。获取无法读取未定义的属性(读取:‘viewMode’)。
这是因为测试模块无法识别接口。类似的情况,我还得到了“无法设置未定义的属性(设置: variable_name)”
请帮我解决这个问题。
发布于 2022-11-01 09:51:24
我认为您可以尝试使用component.docProcess = {viewMode = true};
,因为属性没有初始化,所以需要创建对象,而不是尝试将一个属性指定为未定义的属性。
发布于 2022-11-01 09:52:34
在测试时,角通常会抛出这样的误差,以检查该变量是否存在。大多数情况下,在if( variable_name ) {--代码中编写这段代码会导致未被攻击的variable_name错误-}
解决了这个问题,因为我们正在签入ts代码,variable_name不是未定义的。
https://stackoverflow.com/questions/74279565
复制相似问题