Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.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 NgModule'的提供程序无效;动态测试模块';在Angular 2中测试服务时_Javascript_Angular_Testing_Angular Services - Fatal编程技术网

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'