Angular 单元测试 - 如何监视 Angularfire delete() 的模拟

问题描述 投票:0回答:1

我正在尝试在服务上测试一个简单的删除功能。

  deleteCharacter(id: string) {
    const characterCollectionRef = this.afs.collection<character>('users/' + this.authService.liveUid + '/Characters/');
    return characterCollectionRef.doc(id).delete()
  }

如果我在注释掉实际间谍和期望的情况下运行以下测试,则测试将毫无错误地完成,让我相信我的模拟工作正常。

如果我取消注释间谍和期望行,我会得到一个错误,指出characterCollectionRef.doc不是函数。我尝试了几种不同的变体,但它们都有某种问题。我显然在这里遗漏了一些关于为此编写间谍和断言的最佳方法的内容。

  it('deleteCharacter works', () => {

    AngularFirestoreMock.collection.and.returnValue({
      doc: function () {
        return { delete: function () {
          return Promise.resolve()
         } }
      }
    })

     // const spy = spyOn(AngularFirestoreMock.collection.doc, 'delete')

    service.deleteCharacter('id')

    // expect(spy).toHaveBeenCalled()


  });
angular unit-testing jasmine angularfire
1个回答
0
投票

我们可以将要测试的函数和包含的对象声明为单独的属性,然后我们可以轻松地测试这个新创建的属性。

delete

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.