我想测试具有一些依赖性的简单组件。所以我必须提供一些提供者。Angular 2单元测试错误:无法解析'RequestOptions'的所有参数
/* tslint:disable:no-unused-variable */
import { By } from '@angular/platform-browser';
import { DebugElement, provide } from '@angular/core';
import {
beforeEach,
beforeEachProviders,
describe,
expect,
it,
inject,
fakeAsync,
TestComponentBuilder
} from '@angular/core/testing';
import { AuthHttp, AuthConfig } from 'angular2-jwt';
import { Router, provideRouter } from '@angular/router';
import { Http, ConnectionBackend, RequestOptions, HTTP_PROVIDERS } from '@angular/http';
import { LogoutButtonComponent } from './logout-button.component';
import { UserService } from '../../services/index';
describe('Component: LogoutButtonComponent',() => {
let component: LogoutButtonComponent;
beforeEachProviders(() => [
LogoutButtonComponent,
Http,
provide(AuthHttp, { useFactory: Http }),
provide(AuthConfig, { useValue: new AuthConfig() }),
ConnectionBackend,
RequestOptions,
UserService
]);
beforeEach(inject([AuthHttp, UserService, LogoutButtonComponent],
(comp: LogoutButtonComponent) => {
component = comp;
}));
it('should inject UserService',() => {
// My test here
});
});
虽然我得到了以下错误:
Error: Cannot resolve all parameters for 'RequestOptions'(?). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'RequestOptions' is decorated with Injectable.
我缺少的东西OIN的beforeEachProviders
功能?
注意:这个问题只与Angular 2的Jasmine单元测试有关。我不是在搜索相关的自举应用程序的信息,因为这已经在我的应用程序中确定,并且还有其他相关的问题在这里。
@Sunil嗨,在这种情况下,我得到: '错误:RequestOptions没有提供者! (AuthHttp - > RequestOptions)' –
@VassilisPits你在哪里得到那个错误?某处你正在尝试注入'RequestOptions',你不应该那样做。 1)你不能注入这个类,它没有'Injectable()'注释,请检查[source](https://github.com/angular/angular/blob/2.0.0-rc.4/modules/ %40angular/HTTP/SRC/base_request_options.ts#L17-L123)。您只需要像上面那样实例化具有'new'运算符的'RequestOptions'对象,并且如[documentation]所示(https://angular.io/docs/ts/latest/api/http/index/ RequestOptions-class.html)。 –
我不注射其他地方,这是奇怪的事情:/ –