- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数调用另一个本身使用 http 订阅的函数,但我在测试它时遇到了问题...
我的组件
id = 1;
myFunct() {
this.myService.delete(this.id);
}
我的服务
delete(id) {
this.http.delete(this.myUrl + '/' + id).subscribe()
}
测试
let mockService;
beforeEach(() => {
TestBed.configureTestingModule({
mockService = createSpyObj(['delete']);
imports: ...,
declarations: ...,
providers: [
{provide: MyService, useValue: mockService}
]
}).compileComponents();
fixture = ...;
component = ...;
fixture.detectChanges();
});
it('should test delete', () => {
mockService.delete.and.returnValue({ subscribe: () => {} });
component.myFunct();
expect(mockService.delete).toHaveBeenCalledTimes(1);
});
我的测试返回错误:
Cannot read property 'subscribe' of undefined
最佳答案
常见的模式是从你的服务方法返回可观察的并在内部订阅,例如。成分。
类似这样的:
我的组件
id = 1;
myFunct() {
this.myService.delete(this.id).subscribe(
(result) => console.log(result),
(error) => console.log(error)
};
我的服务
delete(id): Observable<any> {
this.http.delete(this.myUrl + '/' + id)
}
测试
imports {of} from 'rxjs'
let mockService;
beforeEach(() => {
TestBed.configureTestingModule({
mockService = createSpyObj(['delete']);
imports: ...,
declarations: ...,
providers: [
{provide: MyService, useValue: mockService}
]
}).compileComponents();
fixture = ...;
component = ...;
fixture.detectChanges();
});
it('should test delete', () => {
mockService.delete.and.returnValue(of({id: 1}));
component.myFunct();
expect(mockService.delete).toHaveBeenCalledTimes(1);
});
关于angular - 使用 createSpyObj 对可观察量进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53867825/
使用Chai,您可以创建一个 spy 对象,如下所示: chai.spy.object([ 'push', 'pop' ]); 使用 Jasmine ,您可以使用: jasmine.createSpy
在我的 Angular 测试中模拟依赖项时,我通常使用 jasmine.createSpyObj 创建一个 spy 对象。 : const serviceSpy= jasmine.createSpyO
我有一个函数调用另一个本身使用 http 订阅的函数,但我在测试它时遇到了问题... 我的组件 id = 1; myFunct() { this.myService.delete(this.id)
我有一个函数调用另一个本身使用 http 订阅的函数,但我在测试它时遇到了问题... 我的组件 id = 1; myFunct() { this.myService.delete(this.id)
我正在为我的 Angular 应用程序编写单元测试,并且正在学习如何使用 spy 。 目前,我的组件使用的每个服务,我都必须这样写 let fakeMyService = jasmine.create
当使用 createSpyObj 创建 spy 对象时,and.callThrough 似乎并未实际运行原始实现。例如,假设我有一个具有以下辅助方法的 Angular 服务: user.service
如何从 jasmine 导入 createSpyObj 属性? 我已经通过 npm 安装了 @types/jasmine 和 jasmine-core。 我尝试将 jasmine 导入为: impor
假设我有一个类: class MyRealClass { get propOne() { return stuffFromTheServer; } } 测试时,我想实现这个功能: const mo
我是一名优秀的程序员,十分优秀!