@SpringBootTest
public class TestClass {
@Mock
private Page<Customer> pagedResult;
@Mock
private Pageable paging = PageRequest.of(0, 1);
@Mock
private CustomerRepository cutomerRepository;
@InjectMocks
private CustomerServiceImpl service;
@Test
void testss() {
Set<Integer> set = new HashSet<>();
set.add(1);
Pageable paging1 = PageRequest.of(0, 1);
Page<Customer> pa = new PageImpl<>(Arrays.asList(customer));
when(cutomerRepository.findByIdIn(set, paging1)).thenReturn(pa);
when(service.test(set)).thenReturn(Arrays.asList(customer));
assertEquals(customer.getName(), service.test(set).get(0).getgetName());
}
}
实现类
public class CustomerServiceImpl {
private CustomerRepository customerRepository ;
public CustomerServiceImpl(CustomerRepository customerRepository ) {
super();
this.customerRepository = customerRepository ;
}
@Override
public List<Customer> test(Set<Integer> ids) {
Pageable paging = PageRequest.of(0, 1);
Page<Customer> pagedResult = customerRepository.findByIdIn(ids, paging);
return pagedResult.toList();
}
}
我正在尝试使用mockito为我的分页代码编写Junit测试用例,但它失败了,因为它期望方法的返回类型为Page.但是我返回客户列表。
我得到以下错误
org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
ArrayList cannot be returned by findByIdIn()
findByIdIn() should return Page
如果您不确定为什么会出现上述错误,请继续阅读。由于语法的性质,可能会出现上述问题,因为:
>
在错误编写的多线程测试中可能会发生此异常。有关并发测试的限制,请参阅莫基托常见问题解答。
间谍使用当(间谍.foo()).then()语法进行存根。它更安全的存根间谍 - 与 do 回复|抛()系列方法。更多关于莫基托.spy()方法的爪哇多克斯。
我认为你的代码有问题。您的代码中有<code>doctorRepository。findByIdIn方法bt在您的测试类中,它是cutomerRepository.findByIdIn
。
我已经添加了以下代码作为您的< code>CustomerServiceImpl的参考。< br >您可以尝试用同样的方法来执行测试。
SpringBootTest
public class TestClass {
@Mock
private Pageable paging;
@Mock
private CustomerRepository cutomerRepository;
@Mock
private DoctorRepository doctorRepository;
@InjectMocks
private CustomerServiceImpl service;
@Test
void testss() {
Doctor doctor = new Doctor();
doctor.setName("test name");
Set<Integer> set = new HashSet<>();
set.add(1);
PageImpl<Doctor> page = new PageImpl<>(Arrays.asList(doctor));
when(doctorRepository.findByIdIn(Mockito.any(), Mockito.any())).thenReturn(page);
List<Doctor> doctors= service.test(set);
assertEquals(doctor.getName(), doctors.get(0).getgetName());
}
}
我有一个名为user的实体,如下所示: 我还有一个用户摘要类,它旨在返回以进行分页和排序: 这与所有其他实体一起似乎在h2中很好地初始化,从控制台我看到如下内容: 和 甚至: 现在,我已经设置了控制器、服务和存储库... 控制器: 服务:公共接口UserService扩展了UserDetailsService{ 存储库:公共界面UserRepository扩展了JpaRepository{ 最后,
在我的测试项目中,由于以下错误,Spring容器无法创建扩展JPararePository的bean。 原因:org.springframework.beans.factory.BeanCreationException:创建名为“sr svcInfomtrRepository”的bean时出错:FactoryBean在创建对象时引发异常;嵌套异常为java.lang.NosuchMethoder
我得到了存储库代码: 当我在该查询上运行测试时,我得到了以下Hibernate警告:
我有一个简单的JpaRepository和一个finder,它返回按名为“number”的属性降序排列的记录。“number”属性也是我的实体的@Id。这很好,但是有数千条记录,所以我想返回一个页面而不是列表。 如果我将查找器更改为以下内容,则排序不再起作用。我尝试过使用可分页参数的排序功能,但不起作用。还删除了OrderByNumberDesc,但结果相同。 EDIT-添加控制器方法 以下是我的
我对一些基本的Spring数据概念有点困惑。 据我所知,典型的DAO级别结构如下所示: 有了这个概念,我可以使用JPA作为第一个DAO接口的实现,使用JDBC作为第二个DAO接口的实现。 现在我想了解Spring存储库抽象。每个Spring Data tutorial都指定,我应该有一个接口,例如,该接口应该从JPararePository扩展。所以有了这个接口,我已经用JPA锁定了,对吧? 如果
我试图单元测试一个骆驼路线。被测试的路线扩展了一个自定义的抽象RouteBuilder(我知道关于偏爱组合而不是继承-这是维护代码)。我已经像@Roman Vottner在这里所做的那样设置了我的测试。一切都可以工作(初始化),直到我击中层次结构中的第一个抽象类。它有一个@Autowoe类,它没有初始化(为null),即使它在测试开始时被嘲笑和@Autowoe。关于如何解决我的注入问题有什么想法吗