Насмешливый Cloudinary в тесте углового сервиса - PullRequest
0 голосов
/ 30 января 2019

У меня есть служба, которая внедряет облачный класс из @cloudinary/angular-5.x.

Как мне предоставить ложную облачную услугу моему сервису?

Это мой тест:

import { TestBed } from '@angular/core/testing';
import { Cloudinary } from '@cloudinary/angular-5.x';
import { Cloudinary as CloudinaryCore } from 'cloudinary-core';
import { ProductImageService } from './product-image.service';
import { HttpTestingController, HttpClientTestingModule } from '@angular/common/http/testing';
import { CloudinaryService } from './cloudinary.service';

fdescribe('ProductImageService', () => {
  let httpMock: HttpTestingController;
  const baseUrl = 'https://test.com/';

  beforeEach(() => {
    const cloudinaryLib = {
      Cloudinary: CloudinaryCore
    };
    const mockCloudinary = new MockCloudinary(cloudinaryLib, {
      cloud_name: 'test_cloud',
      api_key: 'test_api_key',
      api_secret: 'api_secret'
    });
    TestBed.overrideProvider(Cloudinary, { useFactory: () => mockCloudinary });
    TestBed.configureTestingModule({
      imports: [HttpClientTestingModule],
      providers: [
        ProductImageService,
        CloudinaryService,
        { provide: 'BASE_URL', useValue: baseUrl }
      ]
    });
    httpMock = TestBed.get(HttpTestingController);
  });

  it('should be created', () => {
    const service: ProductImageService = TestBed.get(ProductImageService);
    expect(service).toBeTruthy();
  });
});

class MockCloudinary extends Cloudinary {}

CloudinaryService - это сервис, который я внедряю в мой ProductImageService, в котором CloudinaryService внедряет класс Cloudinary.

Когда тестработает, я получаю следующий результат:

Chrome 71.0.3578 (Windows 10.0.0) ProductImageService should be created FAILED
        Error: StaticInjectorError(DynamicTestModule)[CloudinaryService -> Cloudinary]:
          StaticInjectorError(Platform: core)[CloudinaryService -> Cloudinary]:
            NullInjectorError: No provider for Cloudinary!

Я использую angular 7.2, @cloudinary/angular-5.x 1.0.2 и cloudinary-core 2.5.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...