java - 使用@MockBean 或@Autowired 在测试中模拟

标签 java testing junit mocking junit4

我有这个 Junit 测试,我有一个对象,我想模拟 BackendHotelService 对象;我使用了 @MockBean@Autowired,但是在运行测试时我在两者中都遇到了 java.lang.NullPointerException

@Component
public class FindHotelDataRequestTransformer extends HotelDataRequestTransformer {


    public FindHotelDataRequestTransformer(BackendHotelService backendHotelService) {
        super (backendHotelService);
    }
..
}

和测试:

public class FindHotelDataRequestTransformerTest {

    @MockBean
    //@Autowired
    private BackendHotelService backendHotelService;

    private FindHotelDataRequestTransformer transformer;

    @Before
    public void setUp() {
        transformer = new FindHotelDataRequestTransformer( backendHotelService);
    }

从未使用过后端酒店服务

最佳答案

创建新的 FindHotelDataRequestTransformer 时,是否访问 backendHotelService 的任何字段?

如果是这样,您将需要模拟响应。

试试下面

Mockito.when(backendHotelService.name()).thenReturn("测试);

关于java - 使用@MockBean 或@Autowired 在测试中模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56986508/

相关文章:

java - 调试 richfaces/jsf 项目

c# - 如何关闭 Ranorex 中的浏览器选项卡?

testing - 如何在 NUnit 和 C# 中共享一个 Selenium webdriver 实例?

java - spring mvc Junit 使用mockito作为post方法

java - 具有与之关联的方法的静态对象是否应该大写?

java - dynjs 与 Node 上 javascript 中字符串函数的性能比较

java - 确保不同类型的泛型

ruby-on-rails - 如何测试 API 错误?

java - SpringRunner 和 BEFORE_EACH_TEST_METHOD 额外启动应用程序

java - 莫基托。如何基于模拟对象作为参数返回 boolean 值?