【发布时间】:2017-12-07 15:13:23
【问题描述】:
我无法使用 Karma 在 Angular 5 中测试 getter 和 setter 函数。关于我哪里出错的任何想法?
值被设置,然后测试在调用 getter 函数之前等待 setter 函数解析的一小段时间。代码如下:
service.ts
set header(h: string) {
this.zone.run(() => {
this._header = h;
});
}
get header(): string {
return this._header;
}
test.ts
before(() => {
service = new Service()
});
it('updates header', (done) => {
const header = 'test header';
service.header = header;
// Give header time to update
return Promise.delay(200)
.then(() => {
expect(service.header).to.equal(header);
})
});
我希望断言能够成功解决,但是我得到一个错误
AssertionError: 预期未定义等于“测试标头”
【问题讨论】:
-
您是否找到了有关如何正确地对 Angular 中的 setter/getter 进行单元测试的解决方案?
-
也许是这样?
const spy = spyOnProperty(service, 'header', 'get').andReturn('test header'); expect(service.header).toBe('test header'); expect(spy).toHaveBeenCalled(); -
尝试在分配
service.header = header后添加this.cd.detectChanges()。其中cd是ChangeDetectionRef的一个实例
标签: angular unit-testing karma-runner