Аргумент, переданный для проверки, не является макетомJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Аргумент, переданный для проверки, не является макетом

Сообщение Anonymous »

Я новичок в написании тестов на Java и пытаюсь изучить Mockito.

Это часть класса, который я хочу протестировать.

Код: Выделить всё

public class ExamRepository implements IExamRepository {
private static final Logger LOGGER = LogManager.getLogger(ExamRepository.class);

private IStudentRepository studentRepository = new StudentRepository();
private EntityManager entityManager;

public ExamRepository() {
entityManager = EntityController.getEntityManager();
}

public ExamRepository(EntityManager entityManager){
this.entityManager = entityManager;
}

// Get all exam skeletons from the DB
@Override
public List getAllSkeletons() {
try {
TypedQuery query = entityManager.createQuery("SELECT NEW ExamSkeleton (s.id, s.filename, s.course, s.visible) FROM ExamSkeleton as s", ExamSkeleton.class);

return query.getResultList();
} catch (IllegalArgumentException exception) {
LOGGER.error(exception);
}

return Collections.emptyList();
}
}
Это настоящий тест, который я написал. У меня такое ощущение, что произошла ошибка:
Аргумент, передаваемый в метод проверки(), имеет тип ExamRepository и не является макетом!

Происходит из-за этой строки:

Код: Выделить всё

examRepository = new ExamRepository(entityManager);
Однако я не уверен, как его переписать. Я также не уверен, что еще мне следует тестировать, кроме того факта, что оно запускалось один раз.

Код: Выделить всё

public class ExamRepositoryTest {
@InjectMocks
private ExamRepository examRepository;

@Mock
private EntityManager entityManager;

@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();

@Test
public void canGetAllSkeletons(){
examRepository = new ExamRepository(entityManager);

List examSkeletons = new ArrayList();
examSkeletons.add(new ExamSkeleton());
examSkeletons.add(new ExamSkeleton());

TypedQuery query = mock(TypedQuery.class);
when(entityManager.createQuery(anyString(), Matchers.anyObject())).thenReturn(query);
when(query.getResultList()).thenReturn(examSkeletons);

verify(examRepository, times(1)).getAllSkeletons();
}
}
Надеюсь, вы, ребята, сможете направить меня на правильный путь!

Подробнее здесь: https://stackoverflow.com/questions/505 ... not-a-mock
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»