我已经创建了一个存储,以在行为主体中加载地址详细信息
@Injectable({
providedIn: 'root'
})
export class AddressStore {
private subjectAddress = new BehaviorSubject<Address[]>([]);
address$: Observable<Address[]> = this.subjectAddress.asObservable();
constructor(private addressService: AddressService){
this.loadAddress();
}
private loadAddress(){
this.addressService.getAddressByType('HOME')
.subscribe((state => this.subjectAddress.next(state)));
}
}
我需要模拟单元测试用例中的地址服务返回的数据,但它返回undefined错误:
describe('Address Data Store', () => {
let addressServiceSpy = jasmine.createSpyObj('AddressService', [
'getAddressByType',
]);
let addressService: any;
let addressStore: AddressStore;
let mockAddress = [
{
type: "HOME",
houseNumber: "101",
address: "xyz"
}
];
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
HttpClientTestingModule
],
providers: [
{
provide: AddressService,
useValue: addressServiceSpy
},
AddressStore
],
});
addressService = TestBed.inject(AddressService);
addressStore = TestBed.inject(AddressStore);
});
it('should be created', fakeAsync(() => {
addressService.getAddressByType.and.returnValue(of(mockAddress));
expect(addressStore).toBeTruthy();
flush();
}));
})
如何在为存储编写单元测试用例的同时模拟服务订阅数据.