javascript - Angular 单元测试 : How to unit test . map()?

标签 javascript angular unit-testing jasmine angular-unit-test

我需要测试其中一种服务方法,但我不确定如何为调用某些注入(inject)的服务方法而运行的部分代码实现 100% 的代码覆盖率。

待测服务方式:

@Injectable()
export class BomRevisiosnsService {
  constructor(
    private baseService: BaseService,
    private appConstants: AppConstants,
    private dmConstants: DMConstants
  ) { }

  public getRevisionsData(): any {
    var itemId = this.appConstants.userPreferences.modelData['basicDetails']['itemId'];
    let url = this.dmConstants.URLs.GETBOMREVISIONS + itemId + "/GetRevisionsAsync";
    let headers = {
      "Content-Type": "application/json",
      UserExecutionContext: JSON.stringify(this.appConstants.userPreferences.UserBasicDetails),
    }
    if (itemId != null || itemId != undefined) {
      return this.baseService.getData(url, headers)
        .map(response => {
          // this area not getting covered.
          return response;
        });
    }
  }
}

我如何覆盖:

.map(response => {
  return response;
});

在以下内容中:

测试:

it('should return response if itemId is not null or undefined', () => {
  let mockData = [1,2,3];
  let mockObservable = Observable.of(mockData);
  spyOn(baseService, 'getData').and.returnValue(mockObservable);
  appConstants.userPreferences.modelData['basicDetails']['itemId']=4; // itemId not null or undefined
  dMConstants.URLs.GETBOMREVISIONS ="dummy url";
  subject.getRevisionsData();
  expect(baseService.getData).toBe(mockData); // How do I test .map()?
});

最佳答案

it('should return response if itemId is not null or undefined', () => {
  ...
  const spy = spyOn(baseService.getData).and.return(mockedData)// you need to define data returned by baseService.getData
  const result = subject.getRevisionsData();
  expect(spy).toHaveBeenCalled(); // How do I test .map()?
  expect(result).toEqual(mockedData);// for simple map it will be the same thing that is returned for more complicated map it may differ
});

关于javascript - Angular 单元测试 : How to unit test . map()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56667636/

相关文章:

javascript - VS代码 : Disable HTML Auto Closing Tags only for Javascript files

node.js - 使用 angular、node.js 和身份提供者的 SAML 身份验证

javascript - 如何在 Angular 2 的类方法中访问ajax数据

javascript - Karma 单元测试中的错误 'Cannot read property ' triggerEventHandler' of null'

java - 如何为读取文件并给出字节内容的方法编写 Junit 测试用例?

unit-testing - 将服务注入(inject) Ember 测试

javascript - 馅饼 block 太小

javascript - 如何使用jquery分割输入值?

javascript - Phantomjs 检查响应 header 然后执行某些操作

延迟加载模块上的 Angular 8 动画错误 - 找到合成属性