Как написать модульный тест в Angular, который тестирует простой метод обслуживания - PullRequest
0 голосов
/ 13 марта 2019

Поскольку я никогда не писал Угловой модульный тест, мне нужна помощь в тестировании простого метода обслуживания.

Метод принимает activeBusinessCase и возвращает язык в виде строки на основе взятого activeBusinessCase. Например, если нет перевода для конкретного бизнес-случая, то возвращается строка «de», а если есть определенный язык, то возвращается «de_case1».

Это мой метод внутри файла configuration.service.ts:

  getAutoConfiguredBCLanguage$(): Observable<string> {
    return this.authService.activeBusinessCase$.pipe(
      distinctUntilChanged(),
      map(bc => this.getAutoConfiguredBCLanguage(bc))
    );
  }

  getAutoConfiguredBCLanguage(activeBusinessCase?: string) {
    const browserLang = this.translate.getBrowserLang();
    console.log('BROWSER LANGUAGE: ', browserLang);
    if (this.languages.hasOwnProperty(browserLang)) {
      switch (activeBusinessCase) {
        case 'CASE_1':
          return browserLang.concat(this.businessCases.case_1);
        case 'CASE_2':
          return browserLang.concat(this.businessCases.case_2);
        case 'CASE_2':
          return browserLang.concat(this.businessCases.case_3);
        default:
          return browserLang;
      }
    } else {
      return this.defaultLanguage;
    }
  }

И это текущее состояние моего теста, о котором я понятия не имею:

import { inject, TestBed } from '@angular/core/testing';

import { ConfigurationService } from './configuration.service';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { multiTranslateHttpLoaderFactory } from '../app.component';
import { HttpClient } from '@angular/common/http';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { UserAuthService } from 'app/auth/user-auth.service';

describe('ConfigurationService', () => {

  let config: ConfigurationService;

  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [ConfigurationService],
      imports: [
        HttpClientTestingModule,
        TranslateModule.forRoot({
          loader: {
            provide: TranslateLoader,
            useFactory: multiTranslateHttpLoaderFactory,
            deps: [HttpClient, UserAuthService]
          }
        }),
      ]
    });
  });

  it('should ...', inject([ConfigurationService], (service: ConfigurationService) => {
    expect(service).toBeTruthy();
  }));


  describe('#parseUiInfo', () => {
    it('should return a default or business case specific language', () => {
      config.getAutoConfiguredBCLanguage();
      // TODO
    });

  });

});

Может кто-нибудь помочь мне, пожалуйста?

...