测试 BehaviorSubject 不会抛出访问类型错误
Testing a BehaviorSubject throws no access type error
我正在尝试测试一个 behaviorSubject,但不断得到:
Error: <spyOnProperty> : Property myBehaviorSubject$ does not have access type get
这是我在 myService 中声明 behaviorSubject 的方式:
myBehaviorSubject$ = new BehaviorSubject<Array<ObjectA>>([{name: 'name1'}]);
和我的测试:
describe(`myMethod`, () => {
beforeEach(() => {
myServiceMock = {
myBehaviorSubject$: new BehaviorSubject<Array<ObjectA>>(null)
};
spyOnProperty(myServiceMock, 'myBehaviorSubject$', 'get').and.returnValue(observableOf([{name: 'name1'}] as Array<ObjectA>));
});
it('should access behaviorSubject', () => {
myServiceMock.myBehaviorSubject$.subscribe( result => {
//expect;
});
});
});
您正在模拟 属性 访问的 return 值这一事实意味着您实际上根本没有直接使用 属性。我建议直接创建间谍,而不是您正在做的事情,如下所示:
beforeEach(() => {
myServiceMock = {
myBehaviorSubject$: jasmine.createSpy('myBehaviorSubject$')
.and.returnValue(observableOf([{name: 'name1'}] as Array<ObjectA>))
};
});
这与上面的效果完全相同,但它不会创建 BehaviorSubject
的新实例,这似乎没有被使用。
我正在尝试测试一个 behaviorSubject,但不断得到:
Error: <spyOnProperty> : Property myBehaviorSubject$ does not have access type get
这是我在 myService 中声明 behaviorSubject 的方式:
myBehaviorSubject$ = new BehaviorSubject<Array<ObjectA>>([{name: 'name1'}]);
和我的测试:
describe(`myMethod`, () => {
beforeEach(() => {
myServiceMock = {
myBehaviorSubject$: new BehaviorSubject<Array<ObjectA>>(null)
};
spyOnProperty(myServiceMock, 'myBehaviorSubject$', 'get').and.returnValue(observableOf([{name: 'name1'}] as Array<ObjectA>));
});
it('should access behaviorSubject', () => {
myServiceMock.myBehaviorSubject$.subscribe( result => {
//expect;
});
});
});
您正在模拟 属性 访问的 return 值这一事实意味着您实际上根本没有直接使用 属性。我建议直接创建间谍,而不是您正在做的事情,如下所示:
beforeEach(() => {
myServiceMock = {
myBehaviorSubject$: jasmine.createSpy('myBehaviorSubject$')
.and.returnValue(observableOf([{name: 'name1'}] as Array<ObjectA>))
};
});
这与上面的效果完全相同,但它不会创建 BehaviorSubject
的新实例,这似乎没有被使用。