Mocked jdbcTemplate не возвращает желаемое значение - PullRequest
0 голосов
/ 01 октября 2019

Mocked jdbcTemplate не возвращает желаемый список. (Другая заглушка работает правильно с базовым типом Integer.) Я пробовал оба с thenReturn и thenAnswer, но это не помогло. Ни тогда Возврат, ни тогда Ответ не сработали.

Я должен заглушить эти 2 запроса jdbcTemplate: (

...
List<V_MONITORING_Record> vMonitoring_Record_List = new ArrayList<>();
...
  try {
            vMonitoring_Record_List = jdbcTemplate.query(SELECT_V_MONITORING,
                                                          namedParameters,
                                                          new BeanPropertyRowMapper<>(V_MONITORING_Record.class));
        } catch (DataAccessException exception) {
            }
  try {
                Integer count = jdbcTemplate.queryForObject(SELECT_MONTHLYTABLES.toString(), namedParameters, Integer.class);}
catch(...){}
@RunWith(MockitoJUnitRunner.class)
public class MonitoringTest {

    @MockBean
    NamedParameterJdbcTemplate jdbcTemplate = Mockito.mock(NamedParameterJdbcTemplate.class);

    @InjectMocks
    private MonitoringProcessorNode MonitoringProcessorNode;

    @Mock
    private EmailServiceImpl emailServiceImpl; 


    @Before
    public void setUp() {
            MockitoAnnotations.initMocks(this);
        }


    @Test
    public void test1(){

 Answer<List<V_MONITORING_Record>> ans_V_MONITORING = inv -> {
            List<V_MONITORING_Record> vMonitoring_Record_List = new ArrayList<>();
            V_MONITORING_Record rec = new V_MONITORING_Record();
            rec.setANZAHL(123);
            ...
            vMonitoring_Record_List.add(rec);

            return vMonitoring_Record_List;
        };

 Answer<Integer> ans_Integer = new Answer<Integer>(){
            @Override
            public Integer answer( InvocationOnMock inv)throws Throwable{
                return 3;
            }
        };


MapSqlParameterSource namedParameters = new MapSqlParameterSource();

//This doesn't work
  Mockito.when(jdbcTemplate.query("select * from V_MONITORING", namedParameters, new BeanPropertyRowMapper<>(V_MONITORING_ELINK_Record.class))).thenAnswer(ans_V_MONITORING);


//This works correctly
  Mockito.when(jdbcTemplate.queryForObject(eq("select count(*) from TEST_TABLE_1"), (MapSqlParameterSource)any(), eq(Integer.class))).thenAnswer(ans_Integer);

}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...