0

正しいデータを db に挿入できることをテストしたいと思います。そのために、サービス層にモックを使用します。テスト作業を正しく書く方法を知っています。データを選択するすべての方法で、正しい結果が得られます。しかし、データを挿入して最後に挿入されたレコード ID を返そうとすると、0 が返されます。

public class SeasonServiceImplTest extends BaseServiceTest {

    private static final String SEASON_NAME = "2012-2013";

    private SeasonServiceImpl seasonService;
    private SeasonDao seasonDao;
    private LanguageDao languageDao;

    public SeasonServiceImplTest() {
    }

    @Before
    @Override
    public void setUp() throws Exception {
        super.setUp();

        seasonService = createService(SeasonServiceImpl.class);

        seasonDao = mock(SeasonDao.class);
        when(getDap().getDao(SeasonDao.class)).thenReturn(seasonDao);

        languageDao = mock(LanguageDao.class);
        when(getDap().getDao(LanguageDao.class)).thenReturn(languageDao);
    }

    private SeasonBean createSeasonBean(){
        SeasonBean seasonBean = new SeasonBean();
        Long langId = 1L;
        seasonBean.setId(langId);
        seasonBean.setSeason(SEASON_NAME);
        Map<Long, String> seasonNames = new HashMap<>();
        seasonNames.put(langId, SEASON_NAME);
        seasonBean.setSeasons(seasonNames);
        seasonBean.setBeach(true);
        return seasonBean;
    }

    @Test
    public void testAddSeason() throws TechnicalException, LogicalException {
        Long idAddedSeason = seasonService.addSeason(createSeasonBean());
        SeasonBean selectedSeasonBean = seasonService.getSeasonById(idAddedSeason);
        assertNotNull("Season wasn't added", selectedSeasonBean);
    }
}

そしてDAOに挿入

//addSeason in DAO layer
@Override
    public Long insert(T entity) {
        getSession().save(entity);
        return (Long) getSession().getIdentifier(entity);
    }

最後に挿入されたレコード ID が 0 になるのはなぜですか?

4

0 に答える 0