gpt4 book ai didi

java - stub 类仍然像通常调用的那样运行

转载 作者:行者123 更新时间:2023-11-30 06:46:13 27 4
gpt4 key购买 nike

我有一个正在测试的类,它有一个来自另一个类的方法,我试图对其进行 stub ,以便它跳过它所做的事情并返回一个假对象

class Service{
CacheClass cache;
CacheFactory factory;

public String getString(){
cache = factory.create();

...}

工厂创建连接到数据库,我想跳过这一步;我的测试看起来像这样

@Before
public void setup(){
cache = mock(CacheClass.class);
factory = mock(CacheFactory.class);
when(factory.create()).thenReturn(cache);
}

@Test
public void testGetString(){
service = new Service();
String s = service.getString();
...}

当我尝试运行此测试时。它尝试连接到数据库,但我不希望它这样做。

我做错了什么?

最佳答案

这里:

service = new Service();

这不会神奇地将您的模拟对象注入(inject)到该服务实例中。

您可能需要类似的东西:

service = new Service(mockedCache, mockedFactory);

还有这样的注释:

@InjectMocks
Service service;

您可以使用mockito自动执行此操作;但不幸的是,当注入(inject)失败时,这个构造不会给你一个错误。因此,简单地做类似的事情:

Servce underTest;

@Before
public void setup() {
underTest = new Service(....

关于java - stub 类仍然像通常调用的那样运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43656450/

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