【问题标题】:Correct way to handle async calls in angular4 unit test在 angular4 单元测试中处理异步调用的正确方法
【发布时间】:2017-08-28 14:38:16
【问题描述】:

我一直在寻找正确的方法来使用 Jasmine 在 Angular 4 单元测试中测试 GraphQL 异步调用。 在不使用 setTimeout 函数的情况下测试异步调用的正确流程是什么? 这是我当前的代码,但不等待响应

it('shoud swap', (done) => {
const SequenceMaster = '0';
const sequenceMasterAlts = '2138';
const sKey = '[DARCARS]SS_02_VW+201701_VW';
component.swapTablesData(sKey);
  expect(component.testVariable).toBe(true);
  done();
 });

【问题讨论】:

    标签: javascript angular unit-testing asynchronous jasmine


    【解决方案1】:

    Docs 解释得很好,您可以使用fakeAsync 来做到这一点:

    describe('test service using fakeAsync', fakeAsync(() => {
        let service: SomeService;
    
        beforeEach(() => {
            TestBed.configureTestingModule({ providers: [SomeService] });
    
            service = TestBed.get(SomeService, null);
        });
    
        it('should use SomeService', () => {
            let returnValue: any;
            service.doSomething().then((val: any) => returnValue = val);
            tick();
            expect(returnValue).toBe('return value using fakeAsync');
        });
    });
    

    【讨论】:

    • 我已经按照这些说明进行操作。但所有都在异步调用之前执行
    • 什么意思?
    猜你喜欢
    • 2015-08-12
    • 2017-12-21
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2020-02-19
    • 2015-09-04
    • 1970-01-01
    • 2013-03-14
    相关资源
    最近更新 更多