如何模拟信息是否正确发送到另一台服务器?

How to mock whether information is sent to another server correctly?

我需要模拟测试这个案例:

我已经在我的服务器(称为 server1)中完成了一项功能,因此 当server1收到conditionA的请求时,它向另一个server2发送metrics信息“conditionA:1”(server2的作用是收集所有metrics的结果。例如,如果server2收到两次“conditionA:1”,它会记录:“conditionA : 2").

如何使用 mock 对我的功能进行单元测试,以便我知道服务器 2 收到了信息?

请注意,我知道如何创建导致条件 A 的模拟请求。但我不知道如何对指标是否正确发送到 server2 进行单元测试。任何想法?

您可以使用 EasyMock(以及其他工具)执行此操作。

假设您在具体 class 中有一个名为 "sendMetrics()" 的函数。该函数的工作是将指标作为参数并将它们发送到 server2。

要对此进行模拟,您将创建一个定义 sendMetrics() 函数的接口,让您前面提到的具体 class 实现该接口,然后使用 EasyMock 创建该接口的 Mock 实现。

然后,在您的测试中,您告诉 EasyMock 期待对 sendMetrics() 的调用,并且在进行调用时,return 您定义的 "success" 值。

编辑 你的问题具体说 "I need to mock test this case",它说 "How to unit test my feature..."。所以,我假设你在谈论单元测试。但是,根据您的评论(以及“...以便我知道服务器 2 收到了信息”),听起来您想要执行集成测试。

请记住,单元测试和集成测试之间存在差异。我用 Mocking 描述了一个单元测试。 Mock 基本上就像说 "Ok Unit test, let's assume that Server2 is working correctly, such that if you call it, it returns a happy result"。大概您也想对 Server2 进行单元测试,也许还需要 Mocks ("Ok Server2, let's assume that Server1 sent logical data...")。您还可以使用 Mocks 进行负面测试,这将由您自行解决。验证 "real case" 听起来像是集成测试(即 Server1 实际上连接到 server2)。

请说明。