我需要模拟测试这种情况:
我已经在我的服务器(称为server1)中完成了一个功能,因此当服务器 1 收到带有条件 A 的请求时,它会将指标信息"conditionA:1"发送到另一个服务器 2(服务器 2 的作用是收集所有指标的结果,例如,如果服务器 2 两次收到"条件 A:1",它将记录:"条件 A:2")。
如何使用 mock 对我的功能进行单元测试,以便我知道 server2 接收到信息?
请注意,我知道如何创建导致条件 A 的模拟请求。但是我不知道如何对指标是否正确发送到server2进行单元测试。知道吗?
您可以使用EasyMock(以及其他)来执行此操作。
假设你在一个名为"sendMetrics()"的具体类中有一个名为"sendMetrics()"的函数。该函数的工作是将指标作为参数并将它们发送到 server2。
为了模拟这一点,你可以创建一个定义sendMetrics()函数的接口,让你前面提到的具体类实现该接口,然后使用EasyMock创建接口的Mock实现。
然后,在测试中,您告诉 EasyMock 期望调用 sendMetrics(),并且在调用时返回定义的"成功"值。
编辑您的问题特别说"我需要模拟测试这种情况",它说"如何单元测试我的功能......"。所以,我假设你说的是单元测试。但是,根据您的评论(以及"...以便我知道信息是由 server2") 听起来像您想要执行集成测试。
请记住,单元测试和集成测试之间存在差异。我描述了一个带有模拟的单元测试。模拟基本上就像说"好的单元测试,让我们假设Server2工作正常,这样如果你调用它,它会返回一个满意的结果"。大概你也想对Server2进行单元测试,也许也使用模拟("好的Server2,让我们假设Server1发送了逻辑数据......")。您也可以使用 Mocks 进行阴性测试,我将留给您来弄清楚。验证"真实案例"听起来像是集成测试(即 Server1 实际上连接到 server2)。
请澄清。