Search code examples
javaspringspring-bootspring-webfluxspring-data-mongodb-reactive

How do you test a reactive mongo repository?


I'm trying to test the findByPhoneNumber method in this repository

public interface UserRepository extends ReactiveMongoRepository<User, String> {

    Mono<User> findByPhoneNumber(String phoneNumber);

}

ATM, my test looks like this

@ExtendWith(SpringExtension.class)
class UserRepositoryTest {

    @Autowired
    private UserRepository repository;

    @Test
    void findByPhoneNumber() {
        val phoneNumber = "11111 111111";

        val user = repository.save(User.builder().phoneNumber(phoneNumber).password("password").build());

        assertEquals(user, repository.findByPhoneNumber(phoneNumber));
    }

}

When I run it, I get this error

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'io.freesale.repository.UserRepositoryTest': Unsatisfied dependency expressed through field 'repository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.freesale.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

I'm a Spring noob so please don’t bully me too hard 😀


Solution

  • I was missing the @DataMongoTest annotation