У меня есть служба, которая внедряет облачный класс из @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.