Javascript Jest类型脚本检查类型

Javascript Jest类型脚本检查类型,javascript,typescript,unit-testing,jestjs,Javascript,Typescript,Unit Testing,Jestjs,假设我有以下界面: export interface CMSData { id: number; url: string; htmlTag: string; importJSComponent: string; componentData: ComponentAttribute[]; } 然后我有一个方法,该方法返回此对象类型的数组: public async GetContent(url: string): Promise<CMSData[]&g

假设我有以下界面:

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 [];
    }

}
但是,在这里我得到了以下错误:

“CMSData”仅指类型,但在此处用作值

那么,如何测试我返回的数据是否有效以及类型是否正确呢?

方法接受的参数必须是类

您应该让TSC在编译时检查您是否收到了正确类型的数据


在运行时,您可能希望使用与任何接收到的递归匹配预期属性的对象进行匹配。

这是正确的,因为您不能在此处将
CMSData
用作类的实例。它只是一种不会包含在捆绑代码中的类型。
instanceof
是一个JavaScript二进制运算符,它接受两个操作数,这两个操作数都是值。它听起来像Java的
instanceof
,但它甚至不是类似的。把它读作另一个值的值实例。你不需要测试它,这就是typescript的用途。如果返回类型不同,那么在编码时typescript会让您知道。
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[]);
});