如何在Angular 2中使用自定义方法模拟对象?

如何在Angular 2中使用自定义方法模拟对象?,angular,mocking,Angular,Mocking,我想在Angular 2中为我的类定义添加自定义方法。但当我尝试创建模拟对象时,会出现如下错误(请参见Angular 2教程) refreshProducts():void是为我试图模拟的Search类声明的方法。如何才能最好地解决此错误?或者我是在尝试做一些向后的事情,在Angular 2中可能会以更传统的方式处理 search.ts(示例) mock-searches.js(示例) 如果您的对象文本不符合类结构,那么您可以直接“转换”它(或者更精确地说) 导出常量搜索:搜索[]=[ { 方

我想在Angular 2中为我的类定义添加自定义方法。但当我尝试创建模拟对象时,会出现如下错误(请参见Angular 2教程)

refreshProducts():void
是为我试图模拟的
Search
类声明的方法。如何才能最好地解决此错误?或者我是在尝试做一些向后的事情,在Angular 2中可能会以更传统的方式处理

search.ts(示例) mock-searches.js(示例)
如果您的对象文本不符合类结构,那么您可以直接“转换”它(或者更精确地说)

导出常量搜索:搜索[]=[
{ 
方框:{x:4,y:4,宽20,高20},
dateCreated:新日期(),
产品:[]
},
{ 
方框:{x:4,y:4,宽20,高20},
dateCreated:新日期(),
产品:[]
}
];
您只需要确保使用mock的任何东西实际上都不需要使用mock的
refreshProducts()
方法
Search

另请参见:

  • 这解释了TypeSript的结构类型系统
public/app/mock-searches.ts(3,14): error TS2322: Type '{ box: { x: number; y: number; width: number; height: number; }; dateCreated: Date; eventIdStr: s...' is not assignable to type 'Search[]'.
  Type '{ box: { x: number; y: number; width: number; height: number; }; dateCreated: Date; eventIdStr: s...' is not assignable to type 'Search'.
    Property 'refreshProducts' is missing in type '{ box: { x: number; y: number; width: number; height: number; }; dateCreated: Date; eventIdStr: s...'.
public/app/search.service.ts(33,40): error TS2304: Cannot find name 'err'.
import { Rect } from './rect';

export class Search {
  box: Rect;
  dateCreated: Date;
  products: Product[];

  refreshProducts(): void {
    // Do something useful
  }
}
import { Search } from './search';

export const SEARCHES: Search[] = [
  { 
    box: { x: 4, y: 4, width: 20, height: 20 },
    dateCreated: new Date(),
    products: []
  }
];
export const SEARCHES: Search[] = [
  <Search> { 
    box: { x: 4, y: 4, width: 20, height: 20 },
    dateCreated: new Date(),
    products: []
  },
  <Search> { 
    box: { x: 4, y: 4, width: 20, height: 20 },
    dateCreated: new Date(),
    products: []
  }
];