繁体   English   中英

为什么 mockito 在 Cucumber stepdef 文件中模拟 object 作为 Null?

[英]Why does mockito mocked object in Cucumber stepdef file come as Null?

我正在使用 mockito 和 cucumber。我在 step def 中有一个代码,如下所示:

    @Mock
    private SystemsConfig systemsConfig;
    
    @And("The login  to mySytem is executed successfully")
    public void loginToMySystem() {

        Mockito.when(systemsConfig.getUrl()).thenReturn(MyUnitMocks.baseUrl);
        
    }

调试时,我看到 systemsConfig 显示为 null,尽管我已经嘲笑了它。 使用 junit 同样完美。为什么会这样? 如何使用 mockito 和 cucumber 实现此目的?

它不起作用,因为没有魔法这样的东西。 必须有某种东西将 Mockito 连接到 JUnit,以便它知道何时创建模拟。

当您使用 JUnit 时,您还使用了 Mockito Junit 扩展、Mockito JUnit 运行器、Spring 之类的框架或其他有效调用的框架:

MockitoAnnotations.initMocks(this);

Cucumber 没有这样的扩展名。所以当使用 Cucumber 时,你必须在 before hook 中执行此操作。

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
}

您可以在@Mock的 Java 文档中找到更多更新说明。

https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mock.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM