当前位置: 首页 > 知识库问答 >
问题:

在Angular中使用HTTP请求测试私有方法

白弘伟
2023-03-14

我的任务是为其他人实现的一些组件实现测试。我尽量不修改他们的代码,但我发现这很难,因为他们把所有的方法都私有化了,而且他们在方法中发出HTTP请求并订阅它,这让我很难弄清楚最好的测试场景是什么。下面是一个例子:

private getProfile() {
    this.http
      .get('go/profile/get', {withCredentials: true})
      .subscribe((profile: Profile) => {
        this.user.profile = profile;
        this.updateLineMsgs();
      });
  }

总而言之:

>

这种情况最好的测试场景是什么?

共有1个答案

刘棋
2023-03-14

您可以看到这个答案,以及如何测试私有方法的答案。

在我看来,您不应该测试私有方法,因为私有方法是实现细节,这些方法封装在您的类/应用编程接口中。私有方法是一种工具,它有助于为公共方法(API)创建所需的行为。避免为私有方法编写单元测试的一些原因:

  • 私有方法的实现可以在将来更改。因此,您当前对私有方法的测试是脆弱的,如果应该考虑重写它们

所以你需要测试公共方法,如果这些公共方法是可以的,那么我们可以认为私有方法是可以的。因此,您应该测试公共函数的最终结果。

 类似资料:
  • 我有一个Angular 11项目,我不知道如何测试私有方法。 下面是一个代码示例: 有什么想法吗?

  • wikisearch.spec.ts 接下来,我们订阅来自我们后端的任何传入连接。这使我们可以访问一个对象 ,它允许我们配置我们想要从我们的后端发送的响应,以及测试任何来自我们正在测试的服务的请求。 在我们的示例中,我们要验证SearchWiki的搜索方法是否向正确的URL发出GET请求。这是通过查看当我们的服务连接到我们的模拟后端时获得的请求对象来完成。分析request.url属性,我们可以看

  • 测试这种服务的基本策略是验证请求的内容(正确的URL),并确保我们模拟到服务中的数据通过正确的方法正确返回。 wikisearch.ts 我们的测试策略是检查服务是否已请求正确的网址,一旦我们回复了模拟数据,我们就要验证它是否返回相同的数据。

  • 有没有任何变通办法来直接测试那些方法而不公开它们?

  • 问题内容: 我有一个页面,根据变量的长度,它可以发出不同数量的请求,然后我只想在所有请求完成后才将数据发送到范围。对于这个项目,我不想使用jQuery,因此请不要在答案中包含jQuery。目前,随着每个请求的完成,数据被发送到作用域,这不是我想要的。 这是我到目前为止的部分代码。 这是我对此表示怀疑的部分,因为某些东西需要作为的参数,但是在Angular的文档中并未提及,我不确定它的含义。 谢谢你

  • 我正在尝试使用Jmeter测试一个soap服务。当使用SOAP/XML-RPC请求元素时,服务给出正确的结果。当使用Fiddler执行时,它给出正确的响应(响应代码200)。 但是当我使用Http Request在Jeter上运行相同的服务时。它返回响应代码为500并给出 “请求格式无效:文本/xml。 这在响应数据中。我试着把它改成许多格式,像“应用程序/xml”等等,但是没有用。 [HTTP_