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

Mockito无法运行存根方法

姚胡媚
2023-03-14

我试图通过在传入字符串“John”时返回一个用户对象来建立类(spring-data-jpa存储库)的方法。

发生的情况是,在userService中,当调用users.findbyUsername(“John”)时,它总是返回null,而不是我定义的任何用户对象

when(users.findByUsername("john"))
    .thenReturn(any(User.class));    

当我在测试方法中放置断点并比较users和UserService.users时,它们是相等的。

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = ServiceTestContext.class)
public class UserServiceImplTests {

@InjectMocks
private UserServiceImpl userService;

@Mock
private UserRepository users;

@Test
public void signupUser_alreadyExistingUsername_userCreatedWithRandomGeneratedUsername() {
    // .. creation of emailSignupCommand Object

    when(users.findByUsername("john"))
            .thenReturn(any(User.class));
    userService.signupUser(emailSignupCommand);

    User expectedUser = new User.Builder()
            .withEmail(EMAIL)
            .withPassword(PASSWORD)
            .build();

    // ... verification code
}

pom版本

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.9.5</version>
</dependency>

共有1个答案

牟飞沉
2023-03-14

方法不能返回“任何”用户实例。你必须告诉它返回一个给定的用户。

any()可以用作stubbed方法参数,例如:无论调用的是什么ID,我希望您返回John:

when(users.findByUsername(any(String.class)))
        .thenReturn(new User("John");
 类似资料:
  • 我正在使用某个抛出异常的库,并希望测试在抛出异常时我的代码行为是否正确。将其中一个重载方法截尾似乎不起作用。我得到了这个错误:Stubber不能应用于void。不存在变量类型T的实例类型,因此void确认为T

  • 通过Zef安装了Cro,但无法运行“Cro存根”、“Cro运行”等 (编辑:Fedora 28,Fedora的rakudo) 那么,“cro”安装在哪里?哪儿都找不到。 许可证:艺术-2.0 Source-url:https://github.com/croservices/cro-core.git 提供: 19个模块 取决于: 0项 更新:我已经安装了“cro”,没有“cro”(都是小写)。 根

  • 问题内容: 我最近已经问了几个有关jUnit和Mockito的问题,但我仍然很努力地把握住这个问题。这些教程都是针对非常简单的示例的,因此我正在努力扩大测试用例以适合我的课程。 我目前正在尝试为Webapp中我的一个代理中的方法编写一些测试用例。该方法与代理内部的其他两种方法交互以验证某些对象。我现在只想测试这种方法。 这是我尝试做的事情: 创建我的代理的Mockito对象,如下所示: 使用Moc

  • 我最近问了几个面向jUnit和Mockito的问题,但我仍然很难掌握其中的诀窍。这些教程都是针对非常简单的示例,所以我很难扩展我的测试用例来为我的类工作。 我目前正试图为我在WebApp中的一个代理中的一个方法编写一些测试用例。该方法与代理内部的几个其他方法交互,以验证某些对象。我现在只想测试一下这个方法。 使用Mockito设置存根(希望是正确的术语)。如下所示: 尝试执行我的方法,如下所示:

  • 问题内容: 因此,我开始为我们的Java Spring项目编写测试。 我使用的是JUnit和Mockito。有人说,当我使用when()… thenReturn()选项时,可以模拟服务,而无需模拟它们。所以我要做的是设置: 但是无论我执行哪一个子句,我总会得到一个NullpointerException,这当然是有道理的,因为input为null。 另外,当我尝试从对象模拟另一个方法时: 在那里,

  • 问题内容: 考虑以下代码: 编译器抱怨正在尝试对行为进行存根的行。关于如何使用存根方法返回带有有界通配符的类型的任何指针? 问题答案: 您也可以为此使用非类型安全方法doReturn, 正如在Mockito的Google组中讨论的那样。 尽管它比起来简单,但再次请注意,它不是类型安全的。如果您担心类型安全,那么米尔豪斯的答案是正确的。 额外细节 要明确的是,这是观察到的编译器错误, 我相信编译器已