Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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
Unit testing Angular2服务测试:使用beforeach注入依赖项_Unit Testing_Angular_Jasmine - Fatal编程技术网

Unit testing Angular2服务测试:使用beforeach注入依赖项

Unit testing Angular2服务测试:使用beforeach注入依赖项,unit-testing,angular,jasmine,Unit Testing,Angular,Jasmine,我正在测试具有Http依赖关系的服务。每个测试都是这样的: import { TestBed, async, inject } from '@angular/core/testing'; import { ValidationService } from './validation.service'; import { HttpModule, Http, Response, ResponseOptions, RequestOptions, Headers, XHRBackend } from '

我正在测试具有
Http
依赖关系的服务。每个测试都是这样的:

import { TestBed, async, inject } from '@angular/core/testing';
import { ValidationService } from './validation.service';
import { HttpModule, Http, Response, ResponseOptions, RequestOptions, Headers, XHRBackend } from '@angular/http';
import { MockBackend, MockConnection } from '@angular/http/testing';

describe('DashboardService', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [HttpModule],
      providers: [
        ValidationService,
        { provide: XHRBackend, useClass: MockBackend }
      ]
    });
  });

  it('should ...',
    inject([ValidationService, XHRBackend],
      (service: ValidationService, mockBackEnd: MockBackend) => {
        mockBackEnd.connections.subscribe((connection: MockConnection) => {
          connection.mockRespond(new Response(new ResponseOptions({
            body: JSON.stringify('content')
          })));
        });
      }));
      // assertions ...
});
正如您所看到的,我需要在它的每个位置注入后端模拟

是否可以在每次测试之前使用
在每个测试之前注入依赖项

是否可以在每次测试之前使用beforeach注入依赖项

当然可以

let service;

beforeEach(inject([Service], (svc) => {
  service = svc;
}))
尽管您也可以从
测试台
获取服务,它也是一个注入器

let service;

beforeEach(() => {
  TestBed.configureTestingModule({
    ...
  })

  service = TestBed.get(Service);
})

谢谢,我将尝试两种方法来确定什么最适合我。有没有一种方法可以在不使用测试台设置的情况下注入服务?@PriteshAcharya看到这个我得到了错误
error:StaticInjectorError[Service]:NullInjectorError:No provider for Service@MonkeySupersonic您在测试台上配置了它吗?你仍然需要这样做。