I am trying to write an integration test in micronaut.
I have a controller class:
@Controller("/hello")
public class HelloController {
@Inject
private HelloRepository helloRepository;
@Get("/")
public HttpResponse get() {
return HttpResponse.ok(helloRepository.findAll());
}
}
I am trying to write an integration test for it like:
@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();
}
}
}
But I keep getting the error:
No backing RepositoryOperations configured for repository. Check your configuration and try again
My application.yml file that I put under "src/test/java/resources/" has the following datasource implementation:
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
I have also included this in my build.gradle file
runtime 'com.h2database:h2'
Is there any way to solve this?
Edit: This is my repository class
@Repository
public interface HelloRepository extends CrudRepository<BufferConditionEntity, Long> {}
Is there any way to solve this?
Yes.
The particulars of how to do that will depend on knowing more about your project.
You haven't shown enough information to know what is wrong so I pasted your code into a project which shows that the code in your question appears to work. The only thing that isn't clear is what your initMocks
method does.
See the project at https://github.com/jeffbrown/rajshreerairepository.
https://github.com/jeffbrown/rajshreerairepository/blob/4abe71d7a4ac9ae3cbcdb164f4d2c58249e29106/src/main/java/com/myproject/project/HelloController.java
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());
}
}
https://github.com/jeffbrown/rajshreerairepository/blob/4abe71d7a4ac9ae3cbcdb164f4d2c58249e29106/src/test/java/com/myproject/project/HelloControllerTest.java
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
}
}
https://github.com/jeffbrown/rajshreerairepository/blob/87898caad4699436c60c84b85058d29885e7ec9f/src/main/java/com/myproject/project/HelloRepository.java
package com.myproject.project;
import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;
@Repository
public interface HelloRepository extends CrudRepository<BufferConditionEntity, Long> {
}
https://github.com/jeffbrown/rajshreerairepository/blob/87898caad4699436c60c84b85058d29885e7ec9f/src/main/resources/application.yml
---
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
That test passes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With