У меня есть класс, как показано ниже, для которого мне нужно написать тестовые случаи Junit. У меня есть некоторая идея, как смоделировать метод stati c, когда я учусь. но я нахожу трудности, как мне издеваться над методами. Я слежу за этим в Mocking stati c методов Ниже код содержит stati c и singleton-методы, и в качестве параметра я передаю другой вызов метода AccessValidate. поскольку я учусь, я нахожу это трудным.
@Component
public class ToBeTested{
@Autowired
RestTemplate restTemplate;
@Autowired
AccessValidate accessValidate;
Public SomeObject someOperation() throws Exception{
HttpHeader headers = new HttpHeaders();
MultivalueMap<String, String> valueObject = new LinkedMultivalueMap<>();
valueObject.add("SomeStringKey", SingletonClass.getInstance().decryption(accessValidate.getAccess("applicationName").getId(), accessValidate.getAccess("applicationName").getPassword()));
.....
.....
return restTemplate.postForObjects(args...);
}
}
другие полезные классы
public class Singleton{
private static SingletonClass object;
public static synchronized SingletonClass getinstance(){
if(object == null){
object = new SingletonClass();
}
}
public String decryption(String name, String msg){
//decryption
return "decryptedString";
}
// some more methods
}
другой класс
public class AccessValidate{
Public SomeObject getAccess(String AppName){
SomeObject idAndPassword = new SomeObject();
//....set id and password using some operation
return idAndPassword;
}
......
}
У меня есть некоторая идея, как издеваться Stati c метод, как я учусь. но я испытываю затруднения, как мне издеваться над методами
valueObject.add("SomeStringKey", SingletonClass.getInstance()
.decryption(GrantAccess.getAccess("applicationName").getId(),
accessValidate.getAccess("applicationName").getPassword()));
Выше код включает в себя методы stati c и singleton, и в качестве параметра я передаю другой вызов метода AccessValidate. поскольку я учусь, я нашел это трудным.
Ниже мой подход:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Singleton.class})
public class TestToBeTested{
@Test
public void testCaseforSomeOperation_method() throws Exception{
Singleton singleton = Mockito.mock(Singleton.class);
LinkedMultivalueMap map = Mockito.mock(LinkedMultivalueMap.class);
PowerMockito.whenNew(Singleton.class)
.withNoArguments().thenReturn(singleton);
PowerMockito.whenNew(LinkedMultivalueMap.class)
.withNoArguments().thenReturn(map);
...
}
}