Mocito不处理静态方法实例,我用它来映射user到UserDto。我有错误:error:org.mockito.exceptions.misusing.missingMethodInvocationException:when()需要一个参数,该参数必须是“mock上的方法调用”。例如:when(mock.getArticles()).thenreturn(articles);
此外,此错误可能会出现,因为:1。您可以存根:finall/private/equals()/hashcode()方法中的任何一个。这些方法不能被截断/验证。不支持在非公共父类上声明的模拟方法。2.在when()中,您不是在mock上调用method,而是在其他对象上调用method。
如何解决这个问题。
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest
public class UserServiceImplTest {
private User user;
private String token;
private UserDto userDto;
@InjectMocks
private UserServiceImpl userService;
@Mock
private UserMapper userMapper;
@Before
public void before() {
user = new User(2L, "User_test",
"firstName_test", "lastName_test",
"test@test.pl", true, "password_test",
"address_test", null,new ArrayList<>(),new ArrayList<>(), new HashSet<>());
token = "test_token";
userDto = new UserDto(2L, "User_test",
"firstName_test", "lastName_test",
"test@test.pl", true, "password_test",
"address_test", null,new ArrayList<>(),new ArrayList<>(), new HashSet<>());
}
@Test
public void testFindByUsername() throws Exception {
//Given
String username= "User_test";
when(userMapper.INSTANCE.userToUserDto(userRepository.findByUsername(username))).thenReturn(userDto);
//When
UserDto result = userService.findByUsername(username);
//Then
assertEquals("User_test", result.getUsername());
assertEquals("firstName_test", result.getFirstName());
assertEquals("lastName_test", result.getLastName());
assertEquals("test@test.pl", result.getEmail());
assertEquals("password_test", result.getPassword());
assertEquals("address_test", result.getAddress());
}
@Override
public UserDto findByUsername(final String username) {
User user = userRepository.findByUsername(username);
if (user == null) {
LOGGER.info("Not found user");
}
return mapper.INSTANCE.userToUserDto(user);
}
您需要使用PowerMockito测试Mockito测试内部的静态方法,使用以下步骤:
@PrepareForTest(Static.class) // Static.class contains static methods
调用powermockito.mockstatic()来模拟静态类(使用powermockito.spy(class)来模拟特定的方法):
PowerMockito.mockStatic(Static.class);
只需使用mockito.when()设置预期:
Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);
我在为SpringJUnit4ClassRunner.class)配置测试时遇到了问题。我的问题是因为我的映射器从map结构到达时返回null。
我想实现我自己的并使用Mapstruct将记录映射到POJO。我不太明白如何完成这一点。我遵循了这部分文档:https://www.jooq.org/doc/3.13/manual/sql-execution/fetching/pojos-with-recordmapper-provider/ 我的映射器看起来像这样: 问题是,作为我实际上并没有得到,而是我的语言表中的,因此无法将转换为。知道我需
我有一个简单的Java单模块Gradle项目,其中我使用Mapstruct进行Java映射。我的如下所示: 我的源文件夹包含以下Java源代码:
使用@SpringBootTest,据我所知,Spring实际上是在启动应用程序,并且应该创建映射器类,所以我不明白,为什么映射器总是空?!当我删除@SpringBootTest中的DummyMapper.class时,会出现一个错误,上面写着“Failed to load application Context”。这向我表明,映射器是被识别的。 我觉得奇怪的另一件事是,我必须在映射器中使用“un
我需要将多个dto映射到实体。几乎所有的dto都有一个指向另一个dto的引用,我不知道在映射dto时如何传递引用。 以下是该地址的一个业务实现: 这是地图绘制者 所有实现者都从同一个dto读取,然后将它们映射到dto和entites。 以下是针对客户实施的建议: 以及我希望引用映射地址实体的映射(我的客户实体有一个地址类型字段)。 非常感谢你。
我正在使用MapStruct,mapstruct-jdk8版本1.1.0.final并定义我通过spring注入的抽象类。 我正在研究如何能够通过Junit测试来测试它们?我有一个基本的主映射器,它将使用2个子映射器 我尝试了几种方法,但无法正确实例化映射器来测试它。 java.lang.RuntimeException:java.lang.ClassNotFoundException:找不到Co