假设我有以下接口:
export interface CMSData {
id: number;
url: string;
htmlTag: string;
importJSComponent: string;
componentData: ComponentAttribute[];
}
接下来我有一个方法
,返回该对象类型的数组
:
public async GetContent(url: string): Promise<CMSData[]>{
const response = await super.get<ICMSContentData[]>(url, {});
try {
if (response?.parsedBody) {
return this.ProcessResponse(response.parsedBody);
} else {
this.handleHTTPError(new Error("Error"));
return [];
}
} catch (e) {
this.handleHTTPError(e);
return [];
}
}
接下来我想测试一下是否符合这种情况,于是我编写了以下的测试代码
:
import {ContentIOService} from "..";
import {CMSData} from "../IOServices/ContentIOService";
require('es6-promise').polyfill();
require('isomorphic-fetch');
test('Get Content', async () => {
const service = ContentIOService.getInstance();
const data = await service.GetContent("https://1c7207fb14fd3b428c70cc406f0c27d9.m.pipedream.net");
console.log(data)
expect(data).toBeInstanceOf(CMSData[]);
});
然而在这里我遇到了以下错误:
'CMSData' 只是一个类型,但在此处被用作值。
那么我如何测试返回的数据是否有效并属于正确的类型?
CMSData
用作类的实例。它只是一个类型,不会包含在捆绑代码中。 - tmhao2005instanceof
是JavaScript的二元运算符,它接受两个操作数,两者都是“值”。它听起来像Java的instanceof
,但实际上并不相似。将其解读为“value instanceof anotherValue”。 - Aluan Haddad