首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在订阅回调函数中测试方法调用

在订阅回调函数中测试方法调用
EN

Stack Overflow用户
提问于 2022-06-27 14:38:47
回答 1查看 26关注 0票数 0

我正在尝试创建一个测试,测试是否在订阅回调函数中调用了一个方法。这是设置测试的方法,用于:

代码语言:javascript
运行
复制
 save() {
   this.testService.upsert(this.test).subscribe(() => {
        this.testMethod();
   });
 }

这是我设置的测试:

代码语言:javascript
运行
复制
 it('should call testMethod()', () => {
       mockTestService.upsert.and.returnValue(of(null));
       component.save();
       const spy = spyOn(component, 'testMethod');
       expect(spy.calls.count()).toBe(1);
 });

我在服务上设置了一个间谍对象:

代码语言:javascript
运行
复制
beforeEach(() => {
        mockTestService = jasmine.createSpyObj(['upsert']);
        TestBed.configureTestingModule({
            imports: [HttpClientTestingModule],
            declarations: [TestComponent],
            providers: [
                { provide: TestService, useValue: mockTestService },
            ],
            schemas: [NO_ERRORS_SCHEMA]
        })
            .compileComponents();
        fixture = TestBed.createComponent(TestComponent);
        component = fixture.componentInstance;
    });

测试失败,错误:预期0为1

有人知道如何在订阅回调中处理测试方法调用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-27 15:01:55

你监视得太晚了。在调用testMethod方法之前监视component.save()

代码语言:javascript
运行
复制
it('should call testMethod()', () => {
       mockTestService.upsert.and.returnValue(of(null));
       // !! spy here
       const spy = spyOn(component, 'testMethod');
       component.save();
       expect(spy.calls.count()).toBe(1);
 });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72773924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档