angular - Angular 单元测试:此构造函数与 Angular 依赖注入不兼容
问题描述
我正在尝试编写一个 Angular 单元测试(使用 Angular 测试库)并得到一个奇怪的错误。这是我要测试的组件:
import { Component, Inject, OnInit } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
@Component({
selector: 'dtu-alert-dialog',
templateUrl: './alert-dialog.component.html',
styleUrls: ['./alert-dialog.component.css'],
})
export class AlertDialogComponent implements OnInit {
data: AlertData;
constructor(
public dialogRef: MatDialogRef<AlertDialogComponent>,
@Inject(MAT_DIALOG_DATA) _data: AlertData
) {
this.data = _data;
}
onButtonClick(): void {
this.dialogRef.close();
}
ngOnInit() {}
}
export interface AlertData {
title?: string;
content: string;
buttonLabel?: string;
width?: string;
}
这是我的测试:
/* tslint:disable:no-unused-variable */
import {
MatDialogModule,
MatDialogRef,
MAT_DIALOG_DATA,
} from '@angular/material/dialog';
import { fireEvent, render, screen } from '@testing-library/angular';
import { AlertDialogComponent } from './alert-dialog.component';
let clickCounter = 0;
describe('AlertDialogComponent', () => {
test('should close on button click', async () => {
const closeFn = jest.fn();
await render(AlertDialogComponent, {
imports: [MatDialogModule],
providers: [
{
provide: MatDialogRef,
useValue: {
close: closeFn,
},
},
{
provide: MAT_DIALOG_DATA,
useValue: { content: 'Yankee invasion' },
},
],
});
const closeButton = screen.getByText('Ok');
fireEvent.click(closeButton);
expect(closeFn.mock.calls.length).toEqual(1);
});
});
运行此测试时收到的消息:
此构造函数与 Angular 依赖注入不兼容,因为它在参数列表索引 0 处的依赖无效。
这里有什么问题?
解决方案
推荐阅读
- amazon-web-services - 如何编写一个将文件从 aws 客户端机器上传到 s3 存储桶的 api?
- javascript - 如何在选择选项中获取 v-model 的值
- python - 强制具有多重继承的类在 Python 中具有特定的元类
- ios - 使用领域我如何更新数据,它不应该创建新对象只更新对象
- c# - 将 DataGridView 多行数据保存到 SQL Server LocalDB 中不起作用
- java - AttachPolicyRequest 中的 AWS iot 安全身份是什么?
- json - JSON 子数组到 Bash 关联数组
- r - 当 sep 为 > 时删除第一个元素
- c# - 将字符串转换为 smalldatetime 失败,但仅适用于 4 个帐户中的 1 个
- html - 避免在 CSS 中将边距和内边距加倍