我想在单元测试中模拟一些mongo存储库。我设法使用以下注释在控制器上运行此程序:
@RunWith(SpringRunner.class)
@Import(TestConfig.class)
@WebMvcTest(controllers = TemplatesController.class, excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
public class TemplatesControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private TemplateRepository repository;
}
现在,我也想测试一项服务,但在那里我无法在CI环境中正常工作。我缺少什么,这是我当前的注释:
@RunWith(SpringRunner.class)
@Import(TestConfig.class)
@SpringBootTest
@TestPropertySource(properties = "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration")
public class UserServiceTest {
@Autowired
private UserService userService;
@MockBean
private UserRepository userRepository;
}
这在本地有效,因为我在默认端口上运行了mongoDB。但是,我们的Bamboo服务器当然没有运行mongoDB实例。我认为@TestPropertySource
可以达到与excludeAutoConfiguration
的{{1}}相同的效果。