是否有可能 return 模拟对象用于基于实际 class 中的局部变量的方法调用?
Is it possible to return a mock object for a method call based on a local variable in the actual class?
说我有这个 class:
public class RealClass {
public static void method1(String accountID) {
AccountObject accountObj = soapService.getAccountObject(accountID)
}
}
我正在编写这样的模拟:
AccountObject accountObj = new AccountObject();
accountObj.setGoodAccount(false);
when(soapService.getAccountObject(anyString())).thenReturn(accountObj);
但是,我希望返回的 AccountObject 的“goodAccount”字段基于在 RealClass 中评估的 accountID。因此,例如,如果当前方法调用是 method1("abc123"),那么我想将 goodAccount 设置为 true。如果方法调用是 method1("def456"),那么我希望 goodAccount 为 false。
您可以使用两个帐户对象并指定帐户 ID 而不是 anyString()
AccountObject goodAccount = new AccountObject();
AccountObject badAccount = new AccountObject();
goodAccount.setGoodAccount(true);
badAccount.setGoodAccount(false);
when(soapService.getAccountObject("abc123")).thenReturn(goodAccount);
when(soapService.getAccountObject("def456")).thenReturn(badAccount);
说我有这个 class:
public class RealClass {
public static void method1(String accountID) {
AccountObject accountObj = soapService.getAccountObject(accountID)
}
}
我正在编写这样的模拟:
AccountObject accountObj = new AccountObject();
accountObj.setGoodAccount(false);
when(soapService.getAccountObject(anyString())).thenReturn(accountObj);
但是,我希望返回的 AccountObject 的“goodAccount”字段基于在 RealClass 中评估的 accountID。因此,例如,如果当前方法调用是 method1("abc123"),那么我想将 goodAccount 设置为 true。如果方法调用是 method1("def456"),那么我希望 goodAccount 为 false。
您可以使用两个帐户对象并指定帐户 ID 而不是 anyString()
AccountObject goodAccount = new AccountObject();
AccountObject badAccount = new AccountObject();
goodAccount.setGoodAccount(true);
badAccount.setGoodAccount(false);
when(soapService.getAccountObject("abc123")).thenReturn(goodAccount);
when(soapService.getAccountObject("def456")).thenReturn(badAccount);