如何模拟外部依赖? / Spring Boot

问题描述 投票:0回答:1

我有一个程序,我已经编写了以下集成测试(真正的测试要复杂得多,但这些是重要的部分):

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
@ContextConfiguration(classes=SpringApplication.class)
@Transactional
public class ReportServiceIntegrationTest {

@Autowired
private ReportService4 reportService;

    @Test
    public void testHappyPath() {
        String url = "https://www.someRealUrl.com";
        Document doc = Parser.parseUrl(url);
        Report report = reportService.generateReport(doc);

        assertNotNull(report.getAllRecommendations());
        assertNotNull(report.getId());

        //...

    }

}

集成测试工作正常,但正如您所看到的,它依赖于外部依赖来做一个真正的网站才能工作。这有一些明显的缺点(当你离线时无法测试等等)。

所以我要做的只是模拟Parser.parseUrl()方法来始终从脱机源返回Document而不是调用真实的URL。

我查看了使用PowerMockito并使用@RunWith(PowerMockRunner.class)运行测试,但这迫使我模拟整个报表服务及其背后的存储库,当我真正想做的就是消除对外部源的依赖。

谁能帮我这个?提前致谢!

unit-testing spring-boot powermock
1个回答
0
投票

你可以使用Spring profiles。使用模拟的外部资源创建测试配置文件。

© www.soinside.com 2019 - 2024. All rights reserved.