Javascript NgModule'的提供程序无效;动态测试模块';在Angular 2中测试服务时
我有以下服务:Javascript NgModule'的提供程序无效;动态测试模块';在Angular 2中测试服务时,javascript,angular,testing,angular-services,Javascript,Angular,Testing,Angular Services,我有以下服务: import { Injectable } from '@angular/core'; import { MenuItem } from './../classes/menu-item'; import { ITEMS } from './../static-data/items-list'; @Injectable() export class ItemsListService { getItems(): Promise<MenuItem[]> {
import { Injectable } from '@angular/core';
import { MenuItem } from './../classes/menu-item';
import { ITEMS } from './../static-data/items-list';
@Injectable()
export class ItemsListService {
getItems(): Promise<MenuItem[]> {
return Promise.resolve(ITEMS);
}
}
菜单项定义如下:
export class MenuItem {
name: string;
link: string;
}
项目定义如下:
从“/../classes/菜单项”导入{MenuItem}
export var ITEMS: MenuItem[] = [
{name: 'Vehicles', link: '/vehicles'},
{name: 'Gateways', link: '/gateways'},
{name: 'Statuses', link: '/statuses'},
{name: 'Logs', link: '/logs'}
]
运行测试时,我在浏览器控制台中遇到以下错误:
FAILED ItemListService should ...
及
那么为什么我会有这些错误呢?测试工作的解决方案是什么?这是一个非常恼人的错误,我想在您的规范中包含另一个微妙的原因。在我的例子中,我指定了“提供者”而不是“提供”,如下所示
TestBed.configureTestingModule({
providers: [{provider: ApplicationActions, useClass: ActionMock}] // don't do that (missing 'provide')!
它只是报告,而不是提供诸如“不提供指定键”之类的有用信息
失败:NgModule“DynamicTestModule”的提供程序无效-仅限
允许提供程序和类型的实例,获取:[?[object]?,
…]
我有同样的问题,在我的
爱奥尼亚框架
项目中导入时,如下所示:
import {Device} from '@ionic-native/device'
而不是:
import {Device} from '@ionic-native/device/ngx'
您在ItemListService中有依赖项吗?没有,但我发现了问题。检查我的答案,并明确检查拼写和大写字母。当我研究这个问题时,是因为我使用了大写字母而不是小写字母
Provide
与Provide
相反,我在分支合并后有一个额外的逗号。突然26个测试用例失败了。我做了同样的事情!很好的捕获,只是为了明确起见,我添加了正确的语法:providers:[{provide:ApplicationActions,useClass:ActionMock}]
或providers:[{provide:ApplicationActions,useValue:actionMockInstance}]
它是provider
而不是provider
import {Device} from '@ionic-native/device/ngx'