SpringBoot项目的单元测试中无法注入@Service

use*_*656 5 spring-boot spring-boot-test

我有一个@Service,我试图在单元测试中模拟它,但到目前为止我得到一个空值。在应用程序类中,我指定什么是 scanBasePackages。我必须以不同的方式做到这一点吗?谢谢。

\n\n

这是我实现接口的服务类:

\n\n
@Service\npublic class DeviceService implements DeviceServiceDao {\n\nprivate List<Device> devices;\n\n@Override\npublic List<Device> getDevices(long homeId) {\n    return devices;\n}\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的单元测试。

\n\n
public class SmartHomeControllerTest {\n\n    private RestTemplate restTemplate = new RestTemplate();\n    private static final String BASE_URL = \xe2\x80\x9c..\xe2\x80\x9d;\n\n    @Mock\n    private DeviceService deviceService;\n\n@Test\npublic void getHomeRegisteredDevices() throws Exception {\n\n    Device activeDevice = new DeviceBuilder()\n            .getActiveDevice(true)\n            .getName("Alexa")\n            .getDeviceId(1)\n            .getHomeId(1)\n            .build();\n    Device inativeDevice = new DeviceBuilder()\n            .getInactiveDevice(false)\n            .getName("Heater")\n            .getDeviceId(2)\n            .getHomeId(1)\n            .build();\n\n    UriComponentsBuilder builder = UriComponentsBuilder\n            .fromUriString(BASE_URL + "/1/devices");\n\n    List response = restTemplate.getForObject(builder.toUriString(), List.class);\n\n    verify(deviceService, times(1)).getDevices(1);\n    verifyNoMoreInteractions(deviceService);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Ale*_*rer -2

您应该使用 spring boot runner 运行测试