Merhaba arkadaslar;
mode.find().populate().limit().skip().exec() gibi bir zincirleme mongoose querysi nini jest ile spylamak isyiyorum ama bir turlu basaramadim.
tenant.service.ts
@Injectable()
export class TenantService {
constructor(
@InjectModel(Tenant.name) private readonly tenantModel: TenantModel,
) {}
async GetAll({ skip, limit }: { skip?: number; limit?: number }) {
return await this.tenantModel
.find()
.populate('address')
.limit(limit)
.skip(skip)
.lean();
}
...
mocks/tenant.model
.ts
export class MockTenantModel {
constructor(public data?: TenantCreateDto & { _id: string }) {}
save() {
return this.data;
}
async find(): Promise<this> { return this}
async populate(path: string | string[] | Object & any ): Promise<this> { return this}
async limit():Promise<this> {return this}
async skip():Promise<this> { return this}
async create(data?: TenantCreateDto) {
this.data = { ...data, _id: '646a97180cb6a35a81925bdd' };
return this.data;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
findOne({ _id }) {
return this.data;
}
}
// test dosyasi
test/tenant.service.spec.ts
beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
providers: [
TenantService,
{
provide: getModelToken(Tenant.name),
useClass: MockTenantModel,
},
],
})
.compile();
tenantService = app.get<TenantService>(TenantService);
tenantModel = app.get(getModelToken(Tenant.name));
});
...
...
describe('Tenant Service', () => {
it("should to be defined", () => {
expect(tenantService).toBeDefined()
})
describe("GetTeantns", () => {
beforeEach(async ()=> {
await tenantService.GetAll({})
})
it('should call tenantModel.find()', async () => {
const spy = jest.spyOn(tenantModel, "find")
expect(spy).toBeCalled()
});
})
...
...
terminal ciktisi su sekilde

)