angular - Angular Unit Test,如何使用服务调用测试组件功能
问题描述
我正在尝试测试以下代码:
getEmployeeDetails() {
const employeeURL = 'apiURL';
this.employeeService.getEmployees(employeeURL).subscribe((result) => {
result.forEach((item, index) => {
const addressURL = '/address/' + item.employeeId;
this.employeeService.getAddress(addressURL).subscribe((result2) => {
result2.forEach((item2, index2) => {
});
});
});
});
}
但出现以下错误:
未捕获的 TypeError:result.forEach 不是抛出的函数
尝试使用以下单元测试用例进行测试时
describe('employee test', () => {
const employees = [
{ id: 1, name: 'Raju'},
{ id: 2, name: 'Arun'}
];
const mockEmployeeService = jasmine.createSpyObj('EmployeeService', ['getEmployees']);
const getDataSpy = mockEmployeeService.getEmployees.and.returnValue( of(employees) );
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [...],
imports: [...],
schemas: [...],
providers: [
{ provide: EmployeeService, useValue: mockEmployeeService }
],
});
});
it('should call api and return value', () => {
fixture.detectChanges();
component.getEmployeeDetails();
});
);
请就如何测试上述代码提供建议。
解决方案
推荐阅读
- python - 使用 Python SQLAlchemy 添加、删除和比较值到列
- javascript - 尝试选择 `button` 元素以添加 onClick 事件
- java - 如何将 android 进度条(水平)的颜色更改为不同的部分?
- google-maps - 是否可以从静态地图图片中提取坐标?
- java - 密封类修饰符如何帮助 Java 中的模式匹配?
- javascript - 用于订阅的 PayPal 智能按钮流程存在问题
- php - php mysql固定值比率按钮获取所有状态
- aes - Python和C中的AES时间有什么区别?
- javascript - 道具在反应中解构
- jquery - ms-access 查询 sql :为每个客户端选择一行