angular - 使用 @testing-library/angular 注入模拟服务
问题描述
我正在尝试使用 Kent C Dodds 的 @testing-library/angular 来测试角度组件。我的组件依赖于 Angular 服务。我在 api 文档中没有看到有关如何注入模拟服务以为我的单元测试提供模拟数据的信息。
export class ItemCounterComponent implements OnInit {
public availableTodoCount: number;
constructor(private todoProviderService: TodoProviderService) {
this.todoProviderService.getTodos().subscribe(todos => {
this.availableTodoCount = todos.filter(todo => !todo.completed).length;
});
}
ngOnInit() {
}
}
describe('ItemCounterComponent', () => {
it('shows the count correctly', async () => {
const { getByText } = await render(ItemCounterComponent, { componentProperties: { availableTodoCount: 5 } });
expect (getByText('5 items left'));
});
});
````````````
解决方案
您可以providers
用来提供服务(就像您可以使用 TestBed 一样)
const component = await render(AppComponent, {
providers: [
{
provide: TodoProviderService,
useValue: { getTodos: ... },
},
],
});
更多示例:https ://github.com/testing-library/angular-testing-library/tree/master/src/app/examples
推荐阅读
- c++14 - std::stringstream: 寻求建议
- c# - 折叠数据网格中的详细信息行
- firebase - Firestore 更新有时会失败,并出现错误“错误:16 未经身份验证:请求具有无效的身份验证凭据。”
- java - 如何在 Spring Boot 中修复 oneToMany 中的 HttpMessageNotWritableException
- java - AB 测试框架创建
- linkedin - 领英富媒体上传
- c# - 如何检测数字的持久性何时达到一位
- python - python make_aio_client 返回不同类型的对象
- javascript - 如何使用 date-fns 找到一周中最近的一天
- php - 无法在 Codeigniter / PHPExcel 中重新声明 Excel 类错误