【发布时间】:2021-12-29 13:24:33
【问题描述】:
我是 Angular 新手,正在尝试为以下函数编写单元测试用例。
HomeComponent.ts
ngOnInit() {
this.msalBroadcastService.inProgress$
.pipe(
filter((status: InteractionStatus) => status === InteractionStatus.None),
takeUntil(this._destroying$)
)
.subscribe(() => {
this.YesNo = [
{ label: 'Yes', value: 'Yes' },
{ label: 'No', value: 'No' },
];
this.cols = [
{ field: 'Human', header: 'name', width: '5' },
{ field: 'MaritalStatus', header: 'Marital Status', width: '8' },
];
this.getAllAccounts();
});
}
我尝试了以下测试用例,但我不确定如何涵盖 YesNo、cols、getAllAccounts()
HomeComponent.spec.ts
class MockUserService {
inProgress = of("Login");
}
describe('AccountComponent', () => {
let UserService;
let comp;
let userService;
let testInteractionStatus: InteractionStatus.None;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
{
provide: UserService,
useClass: MockUserService
},
MsalService,
MsalGuard,
MsalBroadcastService,
MessageService,
HomeService,
HomeComponent
],
imports: [HttpClientTestingModule, RouterTestingModule],
declarations: [
HomeComponent
],
}).compileComponents();
});
it('should test....', () => {
const fixture = TestBed.createComponent(HomeComponent);
const app = fixture.debugElement.componentInstance;
app.ngOnInit();
fixture.detectChanges();
expect(userService.inProgress.YesNo).toBeDefined();
expect(userService.inProgress.YesNo).toBeDefined();
});
- 角度版本
Angular CLI:12.2.6 节点:14.17.6 包管理器:npm 7.23.0 操作系统:darwin x64
【问题讨论】:
-
模拟订阅还是测试订阅?嘲讽,看来你已经在为 userService 做了吧?
-
您要测试订阅是否完成,还是要在收到值后立即测试结果?如果我是你,我会用专门的方法提取订阅块中的代码,让测试更容易
-
@SrikarPhaniKumarMarti 我正在测试订阅,但它没有按预期工作。我也尝试过模拟,但它仍然没有用。感谢这里的任何帮助。我收到类似“预期未定义要定义的错误。错误:“预期未定义要定义”
-
您能否将订阅响应发送给我?我一看到就可以帮你
-
我可以知道如何捕获订阅响应吗? @SrikarPhaniKumarMarti
标签: angular unit-testing jasmine testbed