Я пытался написать модульный тест в своем электронном приложении с использованием жасмина и углового 6, но этот способ не работает.У меня есть сервис, который не требуется тестировать в моем конкретном тесте другого сервиса.Поэтому я решил издеваться над первым сервисом следующим образом:
import { Injectable } from '@angular/core';
import { TestService } from '../../services/test/test.service';
@Injectable()
export class TestServiceMock extends TestService {
private somePath: string;
public isFileExistent(path: string): boolean {
return path === '\\some\\kind\\of\\path\\some.json' ? true : false;
}
}
Я получаю следующую ошибку в коде Visual Studio:
[ts] Class 'TestServiceMock' incorrectly extends base class 'TestService'.
Types have separate declarations of a private property 'somePath'.
Мне кажется, я знаю, что эта ошибка возникает, потому чтоЭлемент «somePath» несколько отличается от «TestService», но на самом деле это не так (в моем понимании)!Это «TestService»:
import {Injectable} from '@angular/core';
import {ElectronService} from '../electron/electron.service';
@Injectable()
export class TestService {
private somePath: string;
constructor(private electron: ElectronService) {
this.somePath = this.electron.remote.app.getAppPath();
}
public isFileExistent(path: string): boolean {
return // some boolean after a lot of operations not needed here
}
}
последний, но не менее важный тест, который я пишу, который показывает следующую ошибку:
[ts] Type 'typeof TestServiceMock' cannot be converted to type 'TestService'.
Property 'somePath' is missing in type 'typeof TestServiceMock'.
И тест:
import { RealService } from './real.service';
import { TestServiceMock } from '../../response-models/test/test.service.mock';
import { TestService } from '../../services/test/test.service';
describe('RealService:', () => {
let realservice: RealService;
beforeEach(() => {
realservice = new RealService(TestServiceMock as TestService);
});
it('should be available:', () => {
expect(realservice).toBeDefined();
});
});
Заранее спасибо за помощь!