angular - jasmine-karma 中的模块“DynamicTestModule”导入的意外值“未定义”
问题描述
我正在使用 jasmine-karma 进行单元测试。配置 -
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/jquery": "^3.3.22",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~1.4.2",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
对于所有测试用例,我都收到相同的错误。
错误:模块“DynamicTestModule”导入的意外值“未定义”
app.component.spec.ts
describe('SignupComponent', () => {
let component: SignupComponent;
let fixture: ComponentFixture<SignupComponent>;
let de: DebugElement;
let username: DebugElement;
let firstName: DebugElement;
let lastName: DebugElement;
let mobileNumber: DebugElement;
let email: DebugElement;
let password: DebugElement;
let confirmPassword: DebugElement;
let router: Router;
beforeEach(async () => {
TestBed.configureTestingModule({
declarations: [SignupComponent],
imports: [HttpClientModule, RouterTestingModule, RouterTestingModule.withRoutes([
]),FormsModule, ReactiveFormsModule, BrowserModule, ,ToastrModule],
providers: [
{ provide: SignupService, useClass: SignupService },
{ provide: ToastrService, useClass: ToastrService },
]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(SignupComponent);
component = fixture.componentInstance;
de = fixture.debugElement.query(By.css('form'));
router = TestBed.get(Router)
username = fixture.debugElement.query(By.css('input[id=username]'));
firstName = fixture.debugElement.query(By.css('input[id=firstName]'));
lastName = fixture.debugElement.query(By.css('input[id=lastName]'));
mobileNumber = fixture.debugElement.query(By.css('input[id=mobileNumber]'));
email = fixture.debugElement.query(By.css('input[id=email]'));
password = fixture.debugElement.query(By.css('input[id=password]'));
confirmPassword = fixture.debugElement.query(By.css('input[id=confirmPassword]'));
});
});
beforeEach(() => {
fixture = TestBed.createComponent(SignupComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('Defining SignupComponent component', () => {
fixture = TestBed.createComponent(SignupComponent);
component = fixture.componentInstance;
fixture.detectChanges();
expect(component).toBeDefined();
})
it('should create component', () => {
fixture = TestBed.createComponent(SignupComponent);
component = fixture.componentInstance;
fixture.detectChanges();
expect(component).toBeTruthy();
});
it('SignUp form is inValid when empty', () => {
expect(component.addRegisterData.invalid).toBeTruthy();
});
}));
服务存根文件
export class SignupStubService {
constructor(private http: HttpClient) { }
register(value):Observable<any> {
console.log("in service.ts")
return this.http.post(baseUrl + "user/register", value)
.pipe(map(Response => Response))
}
}
app.component.ts
export class SignupComponent {
constructor(private fb: FormBuilder, private http: HttpClient, private router: Router,
public toastr: ToastrService, public signupservice: SignupService, ) {}
ngOninit()
}
解决方案
当您没有TestBed
正确设置时,通常会发生这种错误。
查看您的代码,您在BrowserModule
. 删除它,看看它是否有效。如果这不是问题,那么好好看看你是如何设置的TestBed
,看看是否有任何不一致之处。
推荐阅读
- ios - 我们的 iOS 应用程序被删除后我能做什么?
- pdf - JsReport Chrome-pdf 配方横向选项
- sql - 在oracle中将父子行转换为JSON
- php - 在 HEADER 中使用用户令牌验证 API
- python - csv.DictReader 分隔符在带有多个引号的 csv 字段中
- python-3.x - 将数据从数据框的顶部移动到底部(df 的列具有不同的长度索引)
- java - 为什么节点被添加到错误的链表中?
- cassandra - 第三个 Cassandra 节点有不同的负载
- haskell - 这种处理哈希冲突的方法是新的/独特的吗?
- android - 我如何为 Nexus 5x 构建 android 4.4.4_r1