Android Easymock,如何在不重置模拟的情况下再添加一个期望值

时间:2017-02-11 07:09:34

标签: android unit-testing easymock android-espresso

我对这样的方法添加了期望,

expect(locationManager.isLocationSettingsEnabled(anyObject(FragmentActivity.class))).andReturn(isLocationEnabled).anyTimes();

replay(locationManager);

但是当我添加时,在重放后期望再增加一个方法(下面提到),第一个方法会自动重置。

expect(locationManager.isNotificationSettingsEnabled(anyObject(FragmentActivity.class))).andReturn(isNotificationsEnabled).anyTimes();

我想知道如何在不重置的情况下再添加一个期望值。

1 个答案:

答案 0 :(得分:1)

Easymock在这个原则上发挥作用。

  • 当你对方法设定一些期望时,你通常会假装/嘲笑该方法的行为。
  • 现在,当您致电replay(mockObject)时,Easymock会在Test Runner环境中注入此模拟行为。

因此,在重放模拟对象之前,您需要对模拟对象执行所有期望。

类似的东西:

EasyMock.expect(mockObject.method1()).andReturn(null);
EasyMock.expect(mockObject.method2()).andReturn(null);

EasyMock.replay(mockObject);

密切关注您的问题,我看到您正在使用两个不同的返回子句模拟单个方法 你可以这样做:

EasyMock.expect(mockObject.method1()).andReturn(new Integer(1)).once();
EasyMock.expect(mockObject.method1()).andReturn(new Integer(2)).once();

EasyMock.replay(mockObject);

当这个Easymock在调用方法时第一次返回1作为输出,在第二次调用方法时返回2。

希望这有帮助!

祝你好运!