gpt4 book ai didi

javascript - 在 Angular 2 中测试服务时 NgModule 'DynamicTestModule' 的提供程序无效

转载 作者:可可西里 更新时间:2023-11-01 02:28:29 26 4
gpt4 key购买 nike

我有以下服务:

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);
}

}

这个服务的测试在这里:

import { TestBed, async, inject } from '@angular/core/testing';

import { ItemListService } from './item-list.service';
import { MenuItem } from './../classes/menu-item';
import { ITEMS } from './../static-data/items-list';

describe('ItemListService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [ ItemListService, MenuItem, ITEMS ]
});
});

it('should ...', inject([ItemListService], (service: ItemListService) => {
expect(service).toBeTruthy();
}));
});

MenuItem 在这里定义:

export class MenuItem {
name: string;
link: string;
}

ITEMS 在这里定义:从 './../classes/menu-item' 导入 { MenuItem };

export var ITEMS: MenuItem[] = [
{name: 'Vehicles', link: '/vehicles'},
{name: 'Gateways', link: '/gateways'},
{name: 'Statuses', link: '/statuses'},
{name: 'Logs', link: '/logs'}
]

当我运行测试时,我在浏览器控制台中收到以下错误:

FAILED ItemListService should ...

enter image description here

那么为什么我会出现这些错误?测试工作的解决方案是什么?

最佳答案

这是一个非常烦人的错误,我想我会在您的规范中包含另一个要查找的微妙原因。在我的例子中,我指定了 providers 而不是 provide 的正确值,如下所示

 TestBed.configureTestingModule({
providers: [{provider: ApplicationActions, useClass: ActionMock}]

它不会提供有用的信息,例如“未指定‘提供’ key ”,而是简单地报告

Failed: Invalid provider for the NgModule 'DynamicTestModule' - onlyinstances of Provider and Type are allowed, got: [?[object Object]?,...]

关于javascript - 在 Angular 2 中测试服务时 NgModule 'DynamicTestModule' 的提供程序无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com