Я новичок в узле js и jsest. У меня есть класс для юнит-теста, используя jest :
import { Observable, from } from 'rxjs';
import { inject, injectable } from 'inversify';
import "reflect-metadata";
import ILogger from './ilogger';
import { ServiceInterface, DaoInterface } from '../interfaces';
@injectable()
class ServiceImpl implements ServiceInterface {
public loggerService: ILogger;
private dao: DaoInterface;
public constructor(@inject("LOGGER") loggerService: ILogger, @inject("DAO") dao: DaoInterface) {
this.loggerService = loggerService;
this.dao = dao;
}
public get = (id: any): Observable<any> => {
return from(this.dao.executeQuery(id));
};
}
export default ServiceImpl;
Я искал много учебников в Интернете, но не смог найти способ насмешки / заглушки дао (, как сделано в java / Junit ), чтобы вернуть заглушки.
Я пытаюсь ниже, но в замешательстве:
import { ServiceImpl } from '../services';
import { Dao } from '../dao';
import { of } from 'rxjs/internal/observable/of';
import { catchError } from 'rxjs/operators';
import "reflect-metadata";
describe('ServiceImpl Tests', () => {
let serviceImpl: ServiceImpl;
beforeAll(() => {
jest.setTimeout(30000);
serviceImpl = new ServiceImpl(null, **<WHAT TO PASS HERE AS MOCKED DAO OBJECT>**);
});
it('temp test case', done => {
expect(serviceImpl.get(10)).toMatch('');
console.log("done===================");
done();
});
});
Что передать вместо и как вернуть фиктивные данные при вызове dao.executeQuery (id)?
Пожалуйста, помогите. Спасибо.