如何在when()中转换方法的返回类型。Mockito的thenReturn方法

时间:2018-08-20 10:36:38

标签: mockito environment-variables junit4

下面是我的代码段。这给了我编译错误,因为env.getProperty将返回String。我如何获得整数值。 Interger.ParseInt无法正常工作。

when(this.env.getProperty("NeededIntegerValue")).thenReturn(15);

下面是我的测试课 公共类MyclassTest {

Myclass myObj=new Myclass();
@Mock Environment env=Mockito.mock(Environment.class);

    @Before
    public void init() {       
        when(this.env.getProperty("StringKey1")).thenReturn("Stringvalue");
        when(this.env.getProperty("StringKey2")).thenReturn(intValue); 
        myObj.setEnvironment(this.env);
    }
    @Test
    public void testTenantIdentifierCutomerTypeCUSTOMER_ACCOUNT() {

        assertEquals("Expecteddata",myObj.testMethod(new StringBuilder(inputData),anotherData).toString); 

    }   
}

下面是需要测试的方法

public StringBuilder testMethod(StringBuilder inputData, String anotherData) 
{
    if (anotherData.equals(env.getProperty("StringKey1"))) {
        inputData=inputData.append(","+arrayOfInputData[Integer.parseInt(env.getProperty("intValue"))]);
    }
}

1 个答案:

答案 0 :(得分:1)

首先,您应该通过以下方式模拟env

when(this.env.getProperty("StringKey1")).thenReturn("StringValue");
when(this.env.getProperty("StringKey2")).thenReturn("StringRepresentationOfYourInt"); 

第二,注意方法本身,应该

arrayOfInputData[Integer.parseInt(env.getProperty("StringKey2"))

不是

arrayOfInputData[Integer.parseInt(env.getProperty("intValue"))

代替 myObj.setEnvironment(this.env);方法中的init()尝试:

@InjectMocks
Myclass myObj = new Myclass();

也删除

的分配

@Mock Environment env=Mockito.mock(Environment.class);

它应该看起来

@Mock Environment env;