Вот метод контроллера, который я собираюсь протестировать с помощью JUnit и JMock.
public String myMethod(ModelMap model, Principal principal,
@PathVariable MyObject obj) {
if (obj != null) {
Student student = getStudent(principal);
if (check(obj, student)) {
model.addAttribute(student).addAttribute(obj);
return "page";
}
}
return REDIR;
}
private boolean check(MyObject obj, Student student) {
return student.getStudentNumber().longValue() == obj.getStudent().getStudentNumber().longValue();
}
Мой тест
final StudentService studentService = context.mock(StudentService.class);
public void test() throws Exception {
ModelMap model = new ModelMap();
final MyObject = new myObject();
context.checking(new Expectations() {
{
oneOf(studentService).getByNumber(SecurityHelper.getStudentNumberOf(Helper.getTestPrincipal()));
will(returnValue(mockStudent));
}
});
controller.myMethod(model, Helper.getTestPrincipal(), obj);
}
При запуске теста я получаю NullPointerExeption
, который указывает на метод проверки. Есть идеи, откуда это? Это потому, что мне не хватает каких-то ожиданий? Student и obj не являются интерфейсами, над которыми можно издеваться. Я новичок в этом. Как лучше всего отслеживать такие ошибки тестирования?
studentService
. - person Duncan Jones   schedule 29.11.2012method1(methdo2()).method3()...
, измените его наtemp2 = method2(); temp1 = method1(temp2); temp1.method3()...
. - person hyde   schedule 29.11.2012