【发布时间】:2021-01-27 14:33:05
【问题描述】:
我需要为以下代码编写 Spock 测试,但我不知道如何在 Spock 测试中使用我的控制器(我以前从未编写过 spock 测试)。您能否给我一个映射器的快速示例,以便我了解测试的结构?
从控制器获取映射器:
@GetMapping("/users/{id}")
public ResponseEntity<Optional<UserResource>> getUserById(@PathVariable long id) {
final Optional<User> userOptional = userService.findById(id);
final Optional<UserResource> userResourceOptional = userOptional.map(userMapper::mapToResource);
return ResponseEntity.ok(userResourceOptional);
}
我的用户映射器:
@Mapper(componentModel = "spring", injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public interface UserMapper {
@Mapping(target = "password", ignore = true)
UserResource mapToResource(User user);
UpdateResource mapToResourceUser(User user);
User mapToUserDomain(UserResource userResource);
}
我的 Spock-Try:
void 'get user return his profile'(){
given:
def result = userService.findById(1) >> Optional.of(jon)
def response = jonJsonString.toString()
when:
controller.getUserById()
then:
response == result
}
提前致谢
【问题讨论】:
-
欢迎来到 SO。请学习如何通过MCVE 提问,然后将问题编辑为一个。例如,您的测试不是一个完整的类,只是一个悬在半空中的 sn-p,没有任何上下文:
userService、jonJsonString和controller在测试中是如何定义的?userService是如何在应用程序类中定义/注入的?我们应该猜测吗?我认为这对你没有多大帮助。请提供一整套我们可以复制、编译和运行的示例类。非常感谢。 ??????