如何解决Karma 单元测试:angular typesafe spyon 无法按预期工作
我有一个生成的(来自 openapi 描述符)cusomerService,它具有以下功能:
@Injectable({
providedIn: 'root'
})
export class CustomerService {
public getCustomerInfoV2(requestCustomerIdRequest: RequestCustomerIdRequest,observe?: 'body',reportProgress?: boolean): Observable<ResponseCustomerInfoV2>;
public getCustomerInfoV2(requestCustomerIdRequest: RequestCustomerIdRequest,observe?: 'response',reportProgress?: boolean): Observable<HttpResponse<ResponseCustomerInfoV2>>;
public getCustomerInfoV2(requestCustomerIdRequest: RequestCustomerIdRequest,observe?: 'events',reportProgress?: boolean): Observable<HttpEvent<ResponseCustomerInfoV2>>;
public getCustomerInfoV2(requestCustomerIdRequest: RequestCustomerIdRequest,observe: any = 'body',reportProgress: boolean = false ): Observable<any> {
...
当我想在我的 spec.ts 文件中模拟结果时,我想使用 spyOn,但是如果我想以类型安全的方式使用它,我会得到一个编译错误:
spyOn(component.customerService,'getCustomerInfoV2').and.returnValue(of({
header: {
requestId: '21212121',responseId: '212121',responseTimestamp: null,statusMessages: [],success: true,},payload: emptyCustomer,} as ResponseCustomerInfoV2));
错误信息:
error TS2345: Argument of type 'Observable<{ header: { requestId: string; responseId: string; responseTimestamp: any; statusMessages: any[]; success: boolean; }; payload: CustomerInfoV2; }>' is not assignable to parameter of type 'Observable<HttpEvent<ResponseCustomerInfoV2>>'.
Type '{ header: { requestId: string; responseId: string; responseTimestamp: any; statusMessages: any[]; success: boolean; }; payload: CustomerInfoV2; }' is not assignable to type 'HttpEvent<ResponseCustomerInfoV2>'.
Property 'type' is missing in type '{ header: { requestId: string; responseId: string; responseTimestamp: any; statusMessages: any[]; success: boolean; }; payload: CustomerInfoV2; }' but required in type 'HttpUserEvent<ResponseCustomerInfoV2>'.
spyOn(component.customerService,} as ResponseCustomerInfoV2 as any));
有没有办法以类型安全的方式使用 spyOn?
解决方法
你们的类型不一样。在您的 spyOn 中,您有一个 ResponseCustomerInfoV2 的 Observable,但您使用的安全类型是 ResponseCustomerInfoV2 类型的 HttPEvent 的 Observable。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。