如何使用Mockito比较Junit测试用例中的多个条件



我想在使用Mockito的Junit测试用例中给出多个条件。下面是我需要使用mockito的Junit测试用例的代码。帮我解决这个问题。

      Customer customer;//Cutomer is a class;
      String temp;
      if(customer.isSetValid() &&
      StringUtil.hasvalue(temp=customer.isGetValid.getValue()))

如何在Mockito中使用多个条件。语法为When(conditions)。thenReturn(true);

when条件是方法的输入参数,而不是if条件,因此您可以传递两个方法参数,这些参数将成为mock的条件。

因此,当模拟一个方法时,您可以传递一个模拟的客户和一个temp值,您将在测试该方法时将其传递给该方法,这样,模拟将返回您在thenReturn函数中传递的任何内容。

您也可以像任何一样使用匹配器

我猜您想使用Customer作为基于您的问题在mock上完成的方法的参数,但您想确保客户处于预期状态。你可能会试图澄清意图或用例,或者用伪语言写下你想做的事情

如果您有例如http客户端,它有saveCustomer(Customer customer),并且客户创建超出了您的控制范围(class 1 save Customer正在创建客户并通过http保存),并且您想在http客户端使用Customer对象时验证其状态,则可以执行以下操作:

Client client = Mockito.mock(Client.class);
Class1 class1 = new Class1(client); //class that uses client and creates customer
ArgumentCaptor<Customer> customerCaptor = ArgumentCaptor.forClass(Customer.class);
class1.createCustomer(); //method that does create and save
verify(client).saveCustomer(customerCaptor.capture());
final Customer customer = Customer.getValue();
Assert.assertTrue(customer.isSetValid());
Assert.assertTrue(StringUtil.hasvalue(temp=customer.isGetValid.getValue()));
//do other asserts on customer

请查看mockito参数捕获器以了解更多详细信息,但这是一种很好的方法,既可以验证方法是否使用期望的类调用,也可以捕获实例,以便对其进行断言。

相关内容

  • 没有找到相关文章

最新更新