【问题标题】:Angular testing service with akita query - mock data带有秋田查询的角度测试服务 - 模拟数据
【发布时间】:2020-10-26 13:24:32
【问题描述】:

我正在与秋田州经理一起为 Angular 工作。 我有一些订阅我的查询的服务/类。 我试图用 jasmine createSpyObj 将一些数据模拟到我的查询中。

这是我的服务(部分):

export class SomeService implements OnDestroy {
  private activeElements$ = this.someAkitaQuery.selectActive();

  constructor(
        private someAkitaQuery: SomeAkitaQuery,
    ) {
        this.activeElements$.subscribe(activeElement => {
      ...
    });
    }
}

这是我的测试:

import { TestBed, async, tick } from '@angular/core/testing';
import { SomeLogicService } from './somelogic.service';
import { SomeQueryService } from './some.service';
import { SomeQuery } from '../stores/order/some/some.query';
import { of } from 'rxjs';


describe('EnhancementPriceService', () => {
    let logicService: SomeLogicService;
    let someQuery: jasmine.SpyObj<SomeQuery>;

    beforeEach(async(() => {
        TestBed.configureTestingModule({
            providers: [
                {
                    provide: SomeQueryService,
                    useValue: jasmine.createSpyObj('SomeQueryService', ['get'])
                },
                {
                    provide: SomeQuery,
                    useValue: jasmine.createSpyObj('SomeQuery', ['selectActive'])
                }
            ]
        });
    }));

    beforeEach(() => {
        someQuery = TestBed.get(SomeQuery);
        logicService = TestBed.get(SomeLogicService);
    });

    it('should return something', () => {
        SomeQuery.selectActive.and.returnValue(
            of([])
        );
        tick();
        logicService.someMethod();
    });
});

不知何故我有测试错误说:

“无法读取未定义的属性‘订阅’”

我的测试基于官方秋田文档:https://datorama.github.io/akita/docs/angular/tests 猜猜问题是:我试图测试服务,而不是组件。 还尝试提供存根查询 - 它是这样工作的,但是对于每个测试我都需要其他数据...

【问题讨论】:

    标签: angular testing service akita


    【解决方案1】:

    解决方案很简单。 返回存根后,我需要获取我的逻辑服务。所以:

    it('should return something', () => {
       SomeQuery.selectActive.and.returnValue(
          of([])
       );
    
       logicService = TestBed.get(SomeLogicService);
       logicService.someMethod();
    });
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      相关资源
      最近更新 更多