我努力嘲笑一个华丽的存储库。以下是实体:
import javax.persistence.*;
@Entity
public class Thing {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
简单存储库:
import io.quarkus.hibernate.orm.panache.PanacheRepository;
import javax.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class ThingRepository implements PanacheRepository<Thing> {
}
这是资源:
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List;
@Path("/things")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class ThingResource {
@Inject
ThingRepository thingRepository;
@GET
public List<Thing> list() {
return thingRepository.listAll();
}
}
和一个简单的测试,我尝试模拟存储库:
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.mockito.InjectMock;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@QuarkusTest
class ThingResourceTest {
private Thing thing;
@Inject ThingResource thingResource;
@InjectMock ThingRepository thingRepository;
@BeforeEach
void setUp() {
Thing thing = new Thing();
thing.setId(1L);
}
@Test
void getAll() {
List<Thing> things = new ArrayList<Thing>();
things.add(thing);
Mockito.when(thingRepository.listAll()).thenReturn(things);
List<Thing> response = thingResource.list();
assertNotNull(response);
assertNotNull(response.get(0));
}
}
测试失败,因为响应列表是
调试器告诉我
存储库
实际上是被嘲笑的。但是由于某种原因,Mockito.when().然后返回()
没有返回我设置的列表。
我错过了什么?谢谢你的任何帮助。
我把<code>东西</code>双重声明。一次作为类变量,另一次在<code>setUp()
我对Mockito和带有“间谍”注释的字段有点混乱。 我想测试这个类: 因此,我创建了一个测试类,如下所示: 当Mockito实例categoryServiceImpl将categoryRepository作为模拟类注入时,但它不知道如何创建boundMapper。这个类依赖于mapper,所以我重写了代码: 但是现在的问题是在Mockito注入映射器之前执行了边界映射器的创建,所以我得到了一个N
现在,发生的事情似乎是,当field为0时,Mockito在第1行捕获对参数的引用。然后,在下一行中,该字段将增加到1,并一直保持到第3行,在第3行中进行验证。因此,Mockito错误地认为有两次调用,而第一次调用显然是 我如何指示Mockito正确地识别这种情况?
我通过https://code.Quarkus.io引导了一个普通的Quarkus应用程序,生成的代码没有在我的Mac上成功构建docker映像。 执行时 顺便说一句:使用GraalVM的本机映像已成功生成 有什么想法吗?
我对莫基托有疑问。我想测试这个简单的类: 我写了这个简单的测试: 此测试运行时没有错误。我等待它没有编译,因为没有任何对userService方法的调用…
我遵循这本quarkus指南:https://quarkus.io/guides/gett-start,在我的本地机器上一切都运行良好。然而,当我推送代码并启动jenkins构建时,我得到了以下错误: 与失败的新方法相反: 我怀疑错误来自新的BOM。配置如下: 我已经在本地机器上安装了Maven3.5.3,并且可以成功地构建项目。所以我不知道是什么原因导致了这次失败...
Mockito似乎是一个非常好的Java存根/模拟框架。唯一的问题是我找不到任何关于使用API的最佳方法的具体文档。测试中使用的常用方法包括: 当您在实践中看到Mockito的示例时,您会看到如下代码: 从我读过的所有文档中,我已经识别了几个Mockito“语法”的“模式”,这些“语法”是通过将这些方法调用像上面的示例一样链接在一起而获得的。我发现的一些常见模式有: 当/然后:当(你的方法())。