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

Mockito定义模拟类型转换时的行为

阎成天
2023-03-14
public class MyClass {
  public String myMethod(ObjectString arg) {
    ans = (String) arg;
    return ans;
  } 
}

public class MyClassTest {
  @Test
  public void myMethod_should_convert_to_string() {
    MyClass testMyClass = new MyClass();
    ObjectString mockObjectString = Mockito.mock(ObjectString.class);
    String expected = "expected string returned";
    Mockito.when(mockObjectString.IS_CAST_TO_STRING).thenReturn(expected);
    String actual = testMyClass.myMethod(mockObjectString);
    Assert.assertEquals(expected, actual);
  }
}

共有1个答案

孔海超
2023-03-14

ObjectString的实例永远不能强制转换为StringString不从任何名为ObjectString的类继承,也不实现任何名为ObjectString的接口。转换为String将始终引发ClassCastException,除非ArgNull

另一方面,如果测试中的类如下所示:

public class MyClass {
    public String myMethod(final Object arg) {
        final String ans = (String) arg;
        return ans;
    }
}

然后,您可以在没有Mockito的情况下实现您想要的目标:

@Test
public void myMethod_should_convert_to_string() {
    MyClass testMyClass = new MyClass();
    String expected = "expected string returned";
    String actual = testMyClass.myMethod(expected);
    assertEquals(expected, actual);
}
 类似资料:
  • 我有一个带有泛型参数的抽象测试类。 我已经实现了它的一个具体测试类。 方法签名如下所示 当运行时,我得到一个说 为什么?我有什么办法可以解决这个问题吗?

  • 由来 Hutool中类型转换最早只是一个工具类,叫做“Convert”,对于每一种类型转换都是用一个静态方法表示,但是这种方式有一个潜在问题,那就是扩展性不足,这导致Hutool只能满足部分类型转换的需求。 解决 为了解决这些问题,我对Hutool中这个类做了扩展。思想如下: Converter 类型转换接口,通过实现这个接口,重写convert方法,以实现不同类型的对象转换 ConverterR

  • 我有下课情节。在测试MyTestableClass时,我希望处理Autowired类。我只想模拟AutoWired类中的变量。 示例类如下- 例如,Console在返回true之前应该给我“inside Service class”。 提前道谢!

  • 我在一次测试中试图使用一个模拟类,但出现了以下错误: 在pom中: (也试用了3.0.0版) 车辆等级: 测试类:

  • 问题内容: 我有一个仅接收单个文件,查找与之相关的文件并打开它的类。遵循以下原则 在我的单元测试中,我希望能够测试someMethod()而不必将物理文件放在某个地方。我可以模拟fileOne并将其传递给构造函数,但是由于在构造函数中正在计算fileTwo,因此我无法对此进行控制。 我可以模拟方法findRelatedFile()-但这是最佳实践吗?在这里寻找最佳设计,而不是寻求实用的解决方法。我

  • 这里,在引擎盖下调用。因此,我需要我的模拟实例返回(指示失败的auth),或者在发生意外情况时抛出。 你知道我该怎么做吗?