gpt4 book ai didi

java - 如何 stub 获取/设置简单类型

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:58 25 4
gpt4 key购买 nike

我是 Mockito 的新手,我想知道如何 stub 获取/设置对。

例如

public interface Order {
public short getStatus();
public void setStatus(short status);
}

我怎样才能让它们正常运行:

如果在测试的某处调用 setStatus(4); 我希望 getStatus() 返回 4。如何做到这一点?

最佳答案

你是stubbing or mocking

区别在于您是在验证行为还是为测试提供数据。你说:

if somewhere in a test I invoke setStatus(4); I would like getStatus() to return 4.

这同时意味着两者。您要么想要验证是否使用参数 4 调用了 setStatus()

verify(mockObject).setStatus(4);

或者您希望将模拟对象设置为在调用 getStatus() 时返回 4。

when(mockObject.getStatus()).thenReturn(4);

Mockito 有 some tutorials其中解释了如何在每种情况下使用它。我怀疑你可以在你的测试中同时做这两件事(但还没有检查过)但这对我来说是一种味道,因为理想情况下你应该只在你的测试中检查模拟一个单一的东西,其他一切都应该被 stub 。但是,一如既往,上下文就是一切,因此您可能需要对对象的一部分进行 stub ,以便验证另一部分的行为,在这种情况下就可以了。

关注AAA syntax并安排您的测试(即进行设置并使用 when 子句)然后执行(即调用被测对象的方法)然后进行断言(即让您的验证 陈述)

编辑

似乎在 mockito 的较新版本 (1.8+) 中可以做你想做的事,尽管不推荐这样做。您可以使用 Spy 创建对象的部分模拟。在这种情况下,您应该能够创建一个实际对象的 Spy,保留 getStatus()setStatus() 方法未 stub (因此它们实际上被调用并used) 并删除其他方法(或者只是验证它们是否被调用)。您可以在 13 Spying on real objects on this page 部分阅读相关信息.

关于java - 如何 stub 获取/设置简单类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10512428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com