我正在尝试用micronaut编写集成测试。
我有一个控制器类:
@Controller("/hello")
public class HelloController {
@Inject
private HelloRepository helloRepository;
@Get("/")
public HttpResponse get() {
return HttpResponse.ok(helloRepository.findAll());
}
}
我正在尝试为其编写集成测试,
@MicronautTest
public class HelloControllerSpec {
@Inject
EmbeddedServer embeddedServer;
@BeforeEach
void setUp() {
initMocks(this);
}
@Test
public void testIndex() throws Exception {
try(RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL())) {
client.toBlocking().exchange("/hello").status();
}
}
}
但我不断收到错误消息:
No backing RepositoryOperations configured for repository. Check your configuration and try again
放置在“ src / test / java / resources /”下的application.yml文件具有以下数据源实现:
datasources:
default:
url: jdbc:h2:mem:devDb
driverClassName: org.h2.Driver
username: sa
password: 'sa'
schema-generate: CREATE_DROP
dialect: H2
jpa:
default:
packages-to-scan:
- 'com.myproject.project'
properties:
hibernate:
hbm2ddl:
auto: update
show_sql: true
我也在我的build.gradle文件中包含了它
runtime 'com.h2database:h2'
有什么办法解决这个问题?
编辑:这是我的存储库类
@Repository
public interface HelloRepository extends CrudRepository<BufferConditionEntity, Long> {}
答案 0 :(得分:1)
有什么办法解决这个问题?
是的
具体操作方法取决于对项目的了解。
您没有显示足够的信息来知道出了什么问题,因此我将您的代码粘贴到了一个项目中,该项目表明您问题中的代码似乎有效。唯一不清楚的是您的initMocks
方法的作用。
查看位于https://github.com/jeffbrown/rajshreerairepository的项目。
package com.myproject.project;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import javax.inject.Inject;
@Controller("/hello")
public class HelloController {
@Inject
private HelloRepository helloRepository;
@Get("/")
public HttpResponse get() {
return HttpResponse.ok(helloRepository.findAll());
}
}
package com.myproject.project;
import io.micronaut.http.HttpStatus;
import io.micronaut.http.client.RxHttpClient;
import io.micronaut.runtime.server.EmbeddedServer;
import io.micronaut.test.annotation.MicronautTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import javax.inject.Inject;
import static org.junit.jupiter.api.Assertions.assertEquals;
@MicronautTest
public class HelloControllerTest {
@Inject
EmbeddedServer embeddedServer;
@BeforeEach
void setUp() {
initMocks(this);
}
@Test
public void testIndex() throws Exception {
try (RxHttpClient client = embeddedServer.getApplicationContext().createBean(RxHttpClient.class, embeddedServer.getURL())) {
assertEquals(HttpStatus.OK, client.toBlocking().exchange("/hello").status());
}
}
void initMocks(Object o) {
// unclear if this method is relevant
}
}
package com.myproject.project;
import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;
@Repository
public interface HelloRepository extends CrudRepository<BufferConditionEntity, Long> {
}
---
micronaut:
application:
name: rajshreerairepository
---
datasources:
default:
url: jdbc:h2:mem:devDb
driverClassName: org.h2.Driver
username: sa
password: 'sa'
schema-generate: CREATE_DROP
dialect: H2
jpa:
default:
packages-to-scan:
- 'com.myproject.project'
properties:
hibernate:
hbm2ddl:
auto: update
show_sql: true
该测试通过。