Loopback-4 模拟注入
Loopback-4 Mocking injection
我正在使用 loopback-4,寻求帮助来模拟在 class 级别声明的 @inject。
请查找以下代码。
import { repository } from '@loopback/repository';
import { AddressRepository } from './address.repository';
import { Address } from './address.db.model';
export class AddressService {
@repository(AddressRepository) private addressRepo: AddressRepository;
async getAddresses(): Promise<Address[]> {
return this.addressRepo.find();
}
}
我正在尝试通过 @loopback/testlab.StubbedInstanceWithSinonAccessor 进行模拟,但它不起作用,因为我没有使用构造函数注入。尝试了以下方法,但它不允许。
let addressRepo: StubbedInstanceWithSinonAccessor<AddressRepository>;
const addressService = new AddressService(addressRepo);
有人可以帮助模拟未在构造函数级别声明的 @injector 吗?
提前谢谢你。
由于您的依赖项被声明为 属性,您需要通过 属性 setter.
提供存根实现
使您的 属性 public
可以从外部进行更改。
export class AddressService {
@repository(AddressRepository)
public addressRepo: AddressRepository;
// ...
}
在测试中使用常规 属性 setter。
let addressRepo: StubbedInstanceWithSinonAccessor<AddressRepository>;
const addressService = new AddressService();
addressService.addressRepo = addressRepo;
我正在使用 loopback-4,寻求帮助来模拟在 class 级别声明的 @inject。
请查找以下代码。
import { repository } from '@loopback/repository';
import { AddressRepository } from './address.repository';
import { Address } from './address.db.model';
export class AddressService {
@repository(AddressRepository) private addressRepo: AddressRepository;
async getAddresses(): Promise<Address[]> {
return this.addressRepo.find();
}
}
我正在尝试通过 @loopback/testlab.StubbedInstanceWithSinonAccessor 进行模拟,但它不起作用,因为我没有使用构造函数注入。尝试了以下方法,但它不允许。
let addressRepo: StubbedInstanceWithSinonAccessor<AddressRepository>;
const addressService = new AddressService(addressRepo);
有人可以帮助模拟未在构造函数级别声明的 @injector 吗?
提前谢谢你。
由于您的依赖项被声明为 属性,您需要通过 属性 setter.
提供存根实现使您的 属性
public
可以从外部进行更改。export class AddressService { @repository(AddressRepository) public addressRepo: AddressRepository; // ... }
在测试中使用常规 属性 setter。
let addressRepo: StubbedInstanceWithSinonAccessor<AddressRepository>; const addressService = new AddressService(); addressService.addressRepo = addressRepo;