我需要模拟这种情况:
我已经完成了服务器中的一项功能(称为server1),因此
当server1收到带有conditionA的请求时,它将度量标准信息“ conditionA:1”发送到另一个server2(server2的作用是收集所有度量标准的结果。例如,如果server2两次接收到“ conditionA:1”,它将记录:“ conditionA :2“)。
如何使用模拟对我的功能进行单元测试,以使我知道该信息由server2接收?
注意,我知道如何创建导致conditionA的模拟请求。但是我不知道如何对度量标准IS是否正确发送到server2进行单元测试。任何的想法?
最佳答案
您可以使用EasyMock(以及其他功能)进行此操作。
假设您在名为“ sendMetrics()”的具体类中有一个函数。该功能的工作是将指标作为参数并将其发送到server2。
为了对此进行模拟,您将创建一个定义sendMetrics()函数的接口,让上述具体类实现该接口,然后使用EasyMock创建该接口的Mock实现。
然后,在测试中,您告诉EasyMock期待对sendMetrics()的调用,并且在进行调用时,返回定义的“成功”值。
编辑
您的问题专门说“我需要对该案例进行模拟测试”,并说“如何对我的功能进行单元测试...”。因此,我假设您正在谈论单元测试。但是,根据您的评论(以及“ ...,以便我知道该信息已被server2接收”),听起来好像您想执行集成测试。
记住,单元测试和集成测试之间是有区别的。我描述了带有模拟的单元测试。模拟基本上就像说“确定单元测试,让我们假设Server2正常工作,这样,如果调用它,它将返回令人满意的结果”。大概您也想对Server2进行单元测试,也许也要对Mocks进行单元测试(“好吧Server2,假设Server1发送了逻辑数据...”)。您也可以使用Mocks进行负面测试,我将由您自己决定。不过,验证“真实情况”听起来像是一个集成测试(即Server1实际上连接到server2)。
请说清楚。