问题描述
我正在尝试对网站的我的模块目录中的服务进行单元测试。但是,当我npm测试它时,它给了我这个错误:
Chrome 86.0.4240.80 (Mac OS 10.15.7) SearchService should be created FAILED
TypeError: Cannot read property 'ngModule' of null
at isModuleWithProviders (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:26155:1)
at expandModuleWithProviders (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:26149:1)
at <Jasmine>
at Function.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:25805:1)
at getNgModuleDef (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:1842:1)
at verifySemanticsOfNgModuleDef (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:25860:1)
at Function.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:25828:1)
at R3TestBedCompiler.applyProviderOverridesToModule (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/testing.js:1331:1)
at R3TestBedCompiler.compileTestModule (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/testing.js:1576:1)
at R3TestBedCompiler.finalize (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/testing.js:1185:1)
Error: Expected undefined to be truthy.
at <Jasmine>
at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/src/app/modules/dashboard/services/search.service.spec.ts:21:21)
Chrome 86.0.4240.80 (Mac OS 10.15.7): Executed 1 of 1 (1 FAILED) (1.514 secs / 1.5 secs)
TOTAL: 1 FAILED,0 SUCCESS
我的search.service.spec.ts几乎是一个骨架:
import { TestBed } from '@angular/core/testing';
import { SearchService } from './search.service';
import { HttpClientModule } from '@angular/common/http';
describe('SearchService',() => {
let service: SearchService;
let mockSearchService = jasmine.createSpyObj('searchService',['search']);
beforeEach(() => {
TestBed.configureTestingModule({
providers:[
{provide: SearchService,useValue: mockSearchService}
],imports: [HttpClientModule],});
service = TestBed.inject(SearchService);
});
it('should be created',() => {
expect(service).toBeTruthy();
});
});
module.ts也很裸露。根据Angular文档,服务应该放在NgModule的provider部分中,我不确定是否应该在顶部导入它。
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule,ReactiveFormsModule } from '@angular/forms';
import { SharedModule } from '@shared/shared.module';
import { SearchService } from './services';
@NgModule({
imports: [
CommonModule,FormsModule,SharedModule,ReactiveFormsModule,],declarations: [
],entryComponents: [
],providers: [SearchService],exports: [],})
export class DashBoardModule {}
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)