Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2和带有服务的单元测试_Javascript_Unit Testing_Typescript_Angular - Fatal编程技术网

Javascript 角度2和带有服务的单元测试

Javascript 角度2和带有服务的单元测试,javascript,unit-testing,typescript,angular,Javascript,Unit Testing,Typescript,Angular,我试图对angular 2服务进行单元测试,但遇到了一些问题 我的班级如下所示: import { Injectable } from '@angular/core'; import {Http} from '@angular/http'; @Injectable() export class BoardServiceService { private http:Http; constructor(http:Http) { this.http = http; }

我试图对angular 2服务进行单元测试,但遇到了一些问题

我的班级如下所示:

import { Injectable } from '@angular/core';
import {Http} from '@angular/http';

@Injectable()
export class BoardServiceService {

  private http:Http;

  constructor(http:Http) {
    this.http = http;
  }

  /**
   * Load a list of remote boards
   * @return {object} The HTTP observable
   */
  loadBoards(){
    return this.http.get('http://google.com');
  }

}
我的测试如下所示。我需要测试第一次测试是否得到一个项目数组:

import {
  beforeEachProviders,
  it,
  describe,
  expect,
  inject
} from '@angular/core/testing';

import {Http, BaseRequestOptions, Response, ResponseOptions} from '@angular/http';
import {MockBackend} from '@angular/http/testing';
import {provide} from '@angular/core';
import { BoardServiceService } from './board-service.service';

describe('BoardService Service', () => {


  beforeEachProviders(() => [
    BaseRequestOptions,
    MockBackend,
    Response,
    BoardServiceService,
    provide(Http, {
      useFactory: (backend, defaultOptions) => new Http(backend, defaultOptions),
      deps: [MockBackend, BaseRequestOptions]
    })
  ]);

  it('should get me a list of items (array type) on subscribe',
    inject([BoardServiceService, MockBackend], (service: BoardServiceService, MockBackend) => {

      const resultSet = [{}];
      const response = new Response(new ResponseOptions({body:resultSet, status:200}));
      MockBackend.connections.subscribe(connection => connection.mockRespond(response));

      BoardServiceService.loadBoards().subscribe(res => expect(res.length).toEqual(1));
    }));
});
当我尝试使用angular cli(ng test)运行测试时,出现以下错误:

花椰菜插件:[花椰菜类型脚本编译器]失败,错误为: Typescript发现以下错误:
C:/Project/angular2/kanboard/tmp/brocoli\u type\u script\u compiler-input\u base\u path-NaWokBRS.tmp/0/src/app/service/boardService/board-service.service.spec.ts (35,27):类型“typeof”上不存在属性“loadBoards” “董事会服务”


有人知道如何让它工作吗?

我认为你应该使用以下方法:

service.loadBoards().subscribe(res => expect(res.length).toEqual(1));
而不是

BoardServiceService.loadBoards().subscribe(res => expect(res.length).toEqual(1));
注入的实例不是类本身