2013-12-23 45 views
1

組織是一個POJO。 下面是測試類:JMockit - java.lang.ClassCastException:java.lang.String不能轉換爲組織

@Tested 
DAOImpl daoImpl; 

    @Injectable 
    JdbcTemplate mockJdbcTemplate; 

    @Mocked 
    DAO ssoDAO; 

    @Before 
    public void setup() { 
     daoImpl = new DAOImpl(); 
     daoImpl.setJdbcTempate(mockJdbcTemplate); 
    } 

    @Test 
    public void testAddOrg() { 

     final String expectedId = "7c82facc"; 
     final String expectedOrg = "one"; 

     new Expectations() {{ 
      mockJdbcTemplate.queryForObject(DAOImpl.GET__KEY_FOR_ORG_IDS, (DAORowMapper) any, expectedId, expectedKeys); 
      result = expectedKeys; 
     }}; 

     Organization actualKey =daoImpl.addOrg(expectedId, expectedKeys); 
     assertEquals(expectedKeys, actualKey); 
    } 

} 

下面是測試類:與方法,我測試了:

@Repository(value = "dao") 
public class DAOImpl implements DAO { 
    private JdbcTemplate jdbcTemplate; 

    static final String GET_KEY_FOR_ORG_IDS = "select keys from table where id=?"; 

    static final String DATASOURCE_BEAN = "dataSource"; 

    @Autowired 
    public void createTemplate(
      @Qualifier(value = DATASOURCE_BEAN) DataSource dataSource) { 
     this.jdbcTemplate = new JdbcTemplate(dataSource); 
    } 

    public SASOrganization addOrgSASRelationship(String orgIds, String orgKeys) { 
     try { 
      Organization key = jdbcTemplate.queryForObject(GET_KEY_FOR_ORG_IDS, new DAORowMapper(), id, keys); 
      return key; 
     } catch (EmptyResultDataAccessException e) { 
      return null; 
     } 
    } 

    public void setJdbcTempate(JdbcTemplate jdbcTemplate) { 
     this.jdbcTemplate = jdbcTemplate; 
    } 

} 

問: 我正在java.lang.ClassCastException

如何解決這個特定的代碼? 如果你可以提供一個編輯的代碼或一個很好的解釋。

+0

爲什麼選擇JMockit? Mockito簡單而美麗:) – MariuszS

+0

這是要求 – Thunder

回答

0

public Organization addOrg(String orgId, String orgKeys)這裏我回來key類型Organization

而且在測試中,

`mockJdbcTemplate.queryForObject(DAOImpl.GET__KEY_FOR_ORG_IDS, (DAORowMapper) any, expectedId, expectedKeys);` 

,你可以看到expectedIdexpectedKeys,我傳遞字符串,但該公司預計,組織不是字符串。

下面是修改後的測試類爲我工作:

@Test 
    public void testAddOrg() { 

     final Organization expectedOrg = new Organization(); 
     expectedOrgAttr.setId("7c82facc"); 
     expectedOrgAttr.setKeys("one"); 

     new Expectations() {{ 
      mockJdbcTemplate.queryForObject(DAOImpl.GET_KEY_FOR_ORG_IDS, (DAORowMapper) any, expectedOrgAttr.getId(), expectedOrgAttr.getKeys()); 
      result = expectedOrgAttr; 
     }}; 

     Organization actualKey =daoImpl.addOrg(expectedOrgAttr.getId(), expectedOrgAttr.getKeys()); 
     assertEquals(expectedOrgAttr.getId(), actualKey.getId()); 
    } 

謝謝你們的快速反應!

0

我會在Expectations塊中使用withInstanceOf(DAORowMapper.class)而不是(DAORowMapper)any

相關問題