0

我的服务中有一个 setter/getter

export class fooService {
  set foo(value: number): void {
    this._privateFoo = value;
  }
  get foo(): number {
    return this._privateFoo;
  }

现在我使用 ts-mockito 模拟了服务,并想检查是否调用了 setter。我尝试通过实例上的 getter 检查变量,但这并没有返回我的值。

组件(FooComponent):

ngOnInit() {
  this.fooService.foo = 2;
  console.log('Foo Service is now:', this.fooService.foo);

单元测试:

mockFooService = mock(FooService);
fooService = instance(mockFooService);
...
TestBed.configureTestingModule({
 declarations: [ FooComponent ],
  providers: [
    { provide: FooService: useValue: fooService }
...

component.ngOnInit();
expect(fooService.foo).toEqual(2);

测试打印Foo Service is now: 2expect失败并带有Expected null to equal 2.

4

2 回答 2

1

我的问题很明显:如果我模拟该服务,它就不再工作了。我应该做的是模拟一个设置器并检查它是否被调用或使用实际的服务。

于 2019-04-03T10:50:57.263 回答
0

一起使用 setter 和 getter。

set foo(value: number): void {
  this._privateFoo = value;
}

get foo(): number{
  return this._privateFoo;
}
于 2019-04-03T10:27:34.123 回答