我有以下服务:
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 ...和

那么为什么我会有这些错误呢?测试工作的解决方案是什么?
发布于 2017-11-18 10:54:39
这是一个令人讨厌的错误,我想我会在你的规范中包含另一个微妙的原因。在我的示例中,我指定了providers 而不是 provide的正确值,如下所示
TestBed.configureTestingModule({
providers: [{provider: ApplicationActions, useClass: ActionMock}]而不是提供有用的信息,比如“不提供指定的关键字”,它只是报告
失败:对象'DynamicTestModule‘的提供程序无效-仅允许提供程序和类型的实例,got:[?object Object?,...]
发布于 2021-08-25 22:54:37
在我的例子中,我的一个提供程序行中有一个乱七八糟的逗号,导致DynamicTestModule认为我传递了undefined定义。
{
provide: ApiService,
useValue: {
getUsers: jasmine
.createSpy('getUsers')
.and.returnValue(of({ status: 200, body: [] })),
},
},
, // whoops!
MessageService,
{ provide: Location, useValue: { back: jasmine.createSpy('back') } },发布于 2021-06-11 18:42:25
在导入我的Ionic Framework项目时,我也遇到了同样的问题:
import {Device} from '@ionic-native/device'而不是:
import {Device} from '@ionic-native/device/ngx'https://stackoverflow.com/questions/41980219
复制相似问题