Метод JMockit, который не является поддельным, не работает
Образец класса
public class Test{
@Tested ClassA objA;
@Test(expected = MyException.class){
String expectedVar = "expectedVar";
new Expectations(objA)
{
{
objA.someMethod();
result = expectedVar;
}
};
// So here is error, when I debug the programm it doesn't even enter following method.
// If I connent out new Expectations(){{...}} block, only then the programm
// will enter the method objA.execute()
objA.execute();
}
Может ли кто-нибудь объяснить, что здесь происходит и почему установка ожиданий для одного метода меняет поведение другого метода?
2 ответа
Я не нашел ответа, поэтому я сделал это по-другому:
new MockUp<ClassA>()
{
@Mock
String someMethod()
{
return expectedVar;
}
};
И теперь все заработало как положено
На самом деле, тест работает отлично. Запустите следующий полный пример, и он пройдет:
public class ExampleTest {
static class ClassA {
String someMethod() { return ""; }
void execute() {
if ("expectedVar".equals(someMethod())) throw new MyException();
}
}
static class MyException extends RuntimeException {}
@Tested ClassA objA;
@Test(expected = MyException.class)
public void exampleTest() {
final String expectedVar = "expectedVar";
new Expectations(objA) {{ objA.someMethod(); result = expectedVar; }};
objA.execute();
}
}