我在mockito
中很陌生。
这是我的原始班级:
@Component
public class QueryForASingleValue<T> implements IExecutor<T> {
@Autowired
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
@Override
public Boolean execute(String sql, T expectedValue) {
T result = getJdbcTemplate().queryForObject(
sql, (Class<T>)expectedValue.getClass());
return expectedValue.equals(result);
}
}
您可能会注意到set/get
函数,它仅用于Junits。
这是我的考试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
@ActiveProfiles("test")
public class QueryForASingleValueTest {
@Mock
private JdbcTemplate mockJdbcTemplate;
@Autowired
private QueryForASingleValue queryForASingleValue;
@Before
public void initTests() {
queryForASingleValue.setJdbcTemplate(mockJdbcTemplate);
}
@Test
public void testShouldReturnTrueIfExpectedValueMatches() {
when(mockJdbcTemplate.queryForObject(anyString(), eq(String.class))).thenReturn("One");
Boolean retVal = queryForASingleValue.execute("TestSql", "One");
assertTrue(retVal);
}
}
我想知道是否可以从原始班级中删除get/set
?可以增强吗?谢谢!