angular - 如何以角度模拟模型
问题描述
我有一个接受模型作为输入的函数
selectFault(fault: Fault) {
this.faultsService.setSelectedFault(fault)
this.router.navigate(['fault-detail']);
}
我已经为它生成了一个测试,但它抱怨故障存根
error TS2693: 'Fault' only refers to a type, but is being used as a value here.
它抱怨的路线是
{ provide: Fault, useValue: faultStub }
为了完整性,整个测试如下
那么我该如何着手更新一个故障以传递给我的函数呢?
let component: Tab1Page;
let fixture: ComponentFixture<Tab1Page>;
beforeEach(() => {
const routerStub = { navigate: () => ({}) };
const faultsServiceStub = {
getFaults: () => ({ subscribe: () => ({}) }),
invalidateCache: () => ({}),
setSelectedFault: () => ({})
};
const faultStub = {};
TestBed.configureTestingModule({
schemas: [NO_ERRORS_SCHEMA],
declarations: [Tab1Page],
providers: [
{ provide: Router, useValue: routerStub },
{ provide: FaultsService, useValue: faultsServiceStub },
{ provide: Fault, useValue: faultStub }
]
});
fixture = TestBed.createComponent(Tab1Page);
component = fixture.componentInstance;
});
it('can load instance', () => {
expect(component).toBeTruthy();
});
describe('selectFault', () => {
it('makes expected calls', () => {
const routerStub: Router = fixture.debugElement.injector.get(Router);
const faultsServiceStub: FaultsService = fixture.debugElement.injector.get(
FaultsService
);
const faultStub: Fault = fixture.debugElement.injector.get(Fault);
spyOn(routerStub, 'navigate');
spyOn(faultsServiceStub, 'setSelectedFault');
component.selectFault(faultStub);
expect(routerStub.navigate).toHaveBeenCalled();
expect(faultsServiceStub.setSelectedFault).toHaveBeenCalled();
});
});
这是我的错
export interface Fault {
description: string;
title: string;
assignee_id: Number;
id: string;
}
解决方案
删除
{ provide: Fault, useValue: faultStub }
. 你不必注入接口providers
删除
const faultStub: Fault = fixture.debugElement.injector.get(Fault);
. 您可以简单地定义一个值并将其传递给如下内容:it('makes expected calls', () => { const routerStub: Router = fixture.debugElement.injector.get(Router); const faultsServiceStub: FaultsService = fixture.debugElement.injector.get( FaultsService ); const faultStub: Fault = { id: '1', assignee_id : 11 , title : 'Test Title', description: 'Sample Description' }; spyOn(routerStub, 'navigate'); spyOn(faultsServiceStub, 'setSelectedFault'); component.selectFault(faultStub); expect(routerStub.navigate).toHaveBeenCalled(); expect(faultsServiceStub.setSelectedFault).toHaveBeenCalled(); });
推荐阅读
- python - 覆盖 Wagtail 删除确认消息
- html - VBA web Scraping - 将 HTMLdoc 转换为 XML,但在单击按钮时遇到错误
- python - 乌龟根本不会在这段代码中移动
- ruby - 根据条件为哈希参数赋值
- python - TypeError: unhashable type: 'list' 用于比较 pandas 列
- powershell - 使用 Powershell 计算特定层中仅子文件夹的总数
- java - Android Room Database:如何在 DAO @Query 中正确选择“tableName”?
- reactjs - React:在功能组件中获取后更改状态
- python - 在值之间添加行完全阶乘和插值
- microsoft-graph-api - 检索在 ms 图中给出 403 错误的线程和帖子