模拟方法没有被执行?

这是我的源代码。

public class Config{
  private Long id;
  private ConfigService configService;
  public Config(Long id){
    this.id=id;
  }
  public setConfigService(ConfigService configService){
    this.configService=configService;
  }
  public ConfigService  getConfigService(){
    return configService;
  }
  public void callingService(){
    ManagedElInterface mei = null
    mei=getConfigService().getIdsFromConfigService(getId());
    //...
  }
  private Long getId(){
  return id;
  }
}

我嘲笑

mei=getConfigService().getIdsFromConfigService(getId());

但我可以在“mei”中看到 null

下面是我使用 EasyMock 进行模拟的测试类。

public class TestConfig{
  @Test
  public void testcallingService{
  Config config=new Config(12345l);
  ConfigService configService =EasyMock.createMock(ConfigService .class);
  config.setConfigService (ConfigService );
  ManagedElInterface mei=new ManagedElInterface();
  //here i mocked 
  EasyMock.expect(configService.
  getIdsFromConfigService(EasyMock.anyLong()))
  .andReturn(mei);
  config.callingService();
  }
}

配置服务类:

    public class ConfigService{
      public ManagedElInterface getIdsFromConfigService(Long l){
        //database code
       return new ManagedElInterface();
      }
    }

ManagedElInterface 类:

  public class ManagedElInterface{
     //data
    }

这里ConfigService是具有getIdsFromConfigService(Long l) 的类。我不想执行这个方法,所以我想模拟。getConfigService().getIdsFromConfigService(getId()); 正在返回ManagedElInterface类的对象,所以我为ManagedElInterface创建了对象并返回我自己的数据你能告诉我我做错了什么吗?提前致谢

愚蠢的

配置服务:

public class ConfigService {    
    public String getId(Long id) {
        return "hardcoded";
    }
}

配置

public class Config {

    private Long id;
    private ConfigService service;

    public Config(Long id) {
        this.id = id;
    }

    public void setConfigService(ConfigService configService){
        this.service=configService;
    }

    public String callingService() {
        String result = this.service.getId(id);
        System.out.println("result = " + result + " for id: " + id);
        return result;
    }
}

测试

import org.easymock.EasyMockSupport;
import org.junit.jupiter.api.Test;

import static org.easymock.EasyMock.expect;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class ConfigTest extends EasyMockSupport {
    // have your testClass extend EasyMockSupport, and use that to create your mock

    private ConfigService service;

    @Test
    public void testCallingService() {
        Config config=new Config(12345l);
        service = createMock(ConfigService.class);
        // as said before, use the createMock method you inherit
        config.setConfigService (service );
        expect(service.getId(12345l)).andReturn("mocked");
        expect(service.getId(17L)).andReturn("smaller");
        replayAll(); // don't forget the replayAll();
        String result = config.callingService();
        assertEquals( "mocked", result);
        Config config2 = new Config(17L);
        config2.setConfigService(service);
        String result2 = config2.callingService();
        assertEquals( "smaller", result2);
        verifyAll(); // to end your test which uses a mock
    }

    // Simple test without the mock to show the difference
    @Test
    public void testNonMocked() {
        Config config = new Config(50L);
        config.setConfigService(new ConfigService());
        String result = config.callingService();
        assertEquals("hardcoded", result);
    }
}

我用于测试的依赖项

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.5.0-M1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.5.0-M1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.0-M1</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.easymock</groupId>
    <artifactId>easymock</artifactId>
    <version>4.0.2</version>
    <scope>test</scope>
</dependency>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.bashrc没有被执行

来自分类Dev

for循环没有被执行python

来自分类Dev

Anacron 日常工作没有被执行

来自分类Dev

Promise.resolve() 没有被执行

来自分类Dev

为什么我的 Print 语句没有被执行?

来自分类Dev

Promise.all 中的 Promise 没有被执行

来自分类Dev

JWPlayer 回调函数没有被执行

来自分类Dev

oracle程序中的问号没有被执行

来自分类Dev

为什么只有一个线程被执行而其他线程没有被执行

来自分类Dev

有些测试没有被执行,但如果单独运行,则执行得很好

来自分类Dev

代码没有错误,但也没有被执行?

来自分类Dev

为什么我的最后一个分歧没有被执行?

来自分类Dev

切换案例菜单没有被执行,只读取默认案例

来自分类Dev

PublishProcess flatMap 操作符没有被执行(rxjava-2)

来自分类Dev

为什么我在 Seq.map 中的函数没有被执行?

来自分类Dev

当我单击“更改”按钮时,函数“changeUsername”没有被执行?

来自分类Dev

为什么当我输入这个 powershell 代码时它没有被执行?

来自分类Dev

为什么线程中调用函数的部分代码没有被执行

来自分类Dev

我的程序中的第二个线程没有被执行

来自分类Dev

方法被执行而不调用它?

来自分类Dev

Antd 过滤不能正常工作,客户端代码被执行但没有过滤发生

来自分类Dev

NSubstitute模拟没有参数的void方法

来自分类Dev

模拟方法没有传递正确的值

来自分类Dev

我在我的Android应用程序中使用okhttp。有什么方法可以防止重复请求被执行?

来自分类Dev

RelayCommands被执行多次

来自分类Dev

有没有模拟高延迟的方法?

来自分类Dev

android.test.AndroidTestCase中的方法setUp没有被模拟

来自分类Dev

NMock3如何模拟没有参数的方法?

来自分类Dev

Scalamock 3.没有参数的模拟重载方法

Related 相关文章

  1. 1

    .bashrc没有被执行

  2. 2

    for循环没有被执行python

  3. 3

    Anacron 日常工作没有被执行

  4. 4

    Promise.resolve() 没有被执行

  5. 5

    为什么我的 Print 语句没有被执行?

  6. 6

    Promise.all 中的 Promise 没有被执行

  7. 7

    JWPlayer 回调函数没有被执行

  8. 8

    oracle程序中的问号没有被执行

  9. 9

    为什么只有一个线程被执行而其他线程没有被执行

  10. 10

    有些测试没有被执行,但如果单独运行,则执行得很好

  11. 11

    代码没有错误,但也没有被执行?

  12. 12

    为什么我的最后一个分歧没有被执行?

  13. 13

    切换案例菜单没有被执行,只读取默认案例

  14. 14

    PublishProcess flatMap 操作符没有被执行(rxjava-2)

  15. 15

    为什么我在 Seq.map 中的函数没有被执行?

  16. 16

    当我单击“更改”按钮时,函数“changeUsername”没有被执行?

  17. 17

    为什么当我输入这个 powershell 代码时它没有被执行?

  18. 18

    为什么线程中调用函数的部分代码没有被执行

  19. 19

    我的程序中的第二个线程没有被执行

  20. 20

    方法被执行而不调用它?

  21. 21

    Antd 过滤不能正常工作,客户端代码被执行但没有过滤发生

  22. 22

    NSubstitute模拟没有参数的void方法

  23. 23

    模拟方法没有传递正确的值

  24. 24

    我在我的Android应用程序中使用okhttp。有什么方法可以防止重复请求被执行?

  25. 25

    RelayCommands被执行多次

  26. 26

    有没有模拟高延迟的方法?

  27. 27

    android.test.AndroidTestCase中的方法setUp没有被模拟

  28. 28

    NMock3如何模拟没有参数的方法?

  29. 29

    Scalamock 3.没有参数的模拟重载方法

热门标签

归档