У меня возникли проблемы при создании тестов с помощью Mockito. Во время отладки с Eclipse я получил null
от Restrictions.eq
, я делал каждый шаг, чтобы создать статический макет для Restrictions
:
@RunWith(PowerMockRunner.class)
@PrepareForTest({ RequisicaoList.class, StatusMessages.class,
FacesMessages.class, Restrictions.class })
public class RequisicaoListTest {
...
@SuppressWarnings("unchecked")
public String criteriaContigencia() {
Criteria criteria = criarCriteria(Requisicao.class);
criteria.createAlias("produto", "prod");
criteria.add(Restrictions.eq("prod.ar",arSelecionada));
if (getExemplo().getNrProtocolo() != null)
criteria.add(Restrictions.eq("nrProtocolo", getExemplo()
.getNrProtocolo()));
situacoesPesquisa.clear();
situacoesPesquisa.add(SituacaoRequisicao.PENDENTE_PAGAMENTO);
situacoesPesquisa.add(SituacaoRequisicao.PENDENTE_AGENDAMENTO);
if (!situacoesPesquisa.isEmpty()) {
criteria.add(Restrictions.in("situacao", situacoesPesquisa));
}
if (getExemplo().getResponsavel() != null && StringUtils.isNotBlank(getExemplo().getResponsavel().getCpf())) {
criteria = criteria.createCriteria("responsavel");
criteria = criteria.add(Restrictions.eq("cpf", getExemplo().getResponsavel().getCpf()));
}
resultado = Collections.checkedList(criteria.list(),Requisicao.class);
return null;
}
Мой код смешивает управляемый компонент со слоем постоянства, я не могу этого изменить, но я должен создать тесты для этого проекта.
Проблема здесь в том, чтобы высмеивать
Restrictions.eq("cpf", getExemplo().getResponsavel().getCpf())
потому что даже я делаю:
SimpleExpression simpleExpressionEq = mock(SimpleExpression.class);
PowerMockito.mockStatic(Restrictions.class);
when(Restrictions.eq("cpf", "00000000091")).thenReturn(simpleExpressionEq);
тогда я все еще получаю null
возврат от Restriction.eq
, даже передавая зрительские значения. Но во время отладки, если я сделаю выражение в представлении выражений, сделав:
Restrictions.eq("cpf", "00000000091"))
Работает нормально и возвращает высмеянное SimpleExpression