MyController {
@Autowired
MyService service;
//Api call for getDetails
service.getDetails();
}
MyService {
@Autowired
MyRepository repo;
}
MyControllertest {
@Autowired
MyController controller;
@Mock
MyRepository repoMock;
@Before
public void setup(){
// intit mocks
}
@Test
public void myTest(){
when(repoMock.getDetails()).thenReturn(null);
controller.getdetails();
}
}
谁能请解释我如何从控制器类模拟存储库。
在这个博客上发了这么多问题,但我没有得到任何回应。
它没有使用您的模拟,因为您没有将这些模拟注入到您的控制器/服务类中。取而代之的是,您正在自动操作它。
正确的操作方法是
@RunWith(MockitoJUnitRunner.class)
public class MyControllerTest {
@InjectMocks
MyController controller;
.....
}
更好的解决方案是摆脱字段注入,使用构造函数注入
例如,在控制器和服务类中。您可以在contructor上使用@autowired而不是在Fields上使用。例如
class MyService {
private final MyRepository repo;
@Autowired
public MyService(final MyRepository repo) {
this.repo = repo;
}
}
class MyController {
@Autowired
private final MyService service;
public MyController(final MyService service) {
this.service = service
}
}
@RunWith(MockitoJUnitRunner.class)
public class MyControllertest {
MyController controller;
MyService service;
@Mock
MyRepository repoMock;
@Before
public void setup(){
// init mocks
service = new MyService(repoMock);
controller = new MyController(service);
}
..............
}
我已经创建了一个包含控制器、服务和存储库层的基本Rest API。我现在正在尝试为通过产品ID查找产品的服务层方法编写一个单元测试。但是,当我运行测试时,它会在我试图模拟存储库findById()方法的行中抛出一个NullPointerException。 服务层中的getProductById()方法如下所示: 我的服务层测试类:
我有控制器方法,为此我正在创建Junit,但在调用服务方法时出现Null指针错误。我使用了电源模拟,但仍然得到Null指针。 方法: 测试方法: @InjectMocks私有DataSourceReportController dataSourceReportController; 在“dataSourceReportService.listDataSourceReportByCurrentRun
当我尝试用PowerMock和Mockito测试一个方法并模拟它的依赖关系时遇到了问题。我尝试将依赖关系方法转换为非静态方法,并使用@mock注释和@injectmocks,但没有任何结果。 下面是正在测试的类和方法: 这里有一个我想要嘲弄的依赖关系,我很难嘲弄它: 最后,但不是最不重要的是,使用失败的测试方法的测试类。我不得不说,它甚至没有到达assert方法调用,而是在when().ThenR
我使用Spring Initializr生成了一个Spring Bootweb应用程序,使用嵌入式Tomcat+Thymeleaf模板引擎,并将其打包为一个可执行的JAR文件。 类NexTelsMSSender: . 但这似乎并不是在嘲弄对象属性,因为当我打包应用程序时。我有一个错误:
我试图编写一些基本的backingBean测试,但我一直在模仿UserContext和facesContext。 此代码在我尝试测试的代码中: 在另一段代码中,我得到了以下内容: 如何在标准jUnit测试中仅使用mockito来模拟这些?还是必须使用PowerMock之类的工具?
我试图从ISO20022存储库中生成最新的一组XSD,它是以EMF格式提供的。