开发者

Mockito: How to test my Service with mocking?

开发者 https://www.devze.com 2022-12-21 00:31 出处:网络
I\'m new to mock testing. I want to test my Service method CorrectionService.correctPerson(Long personId).

I'm new to mock testing.

I want to test my Service method CorrectionService.correctPerson(Long personId). The implementation is not yet written but this it what it will d开发者_Python百科o:

CorrectionService will call a method of AddressDAO that will remove some of the Adress that a Person has. One Person has Many Addresses

I'm not sure what the basic structure must be of my CorrectionServiceTest.testCorrectPerson.

Also please do/not confirm that in this test i do not need to test if the adresses are actually deleted (should be done in a AddressDaoTest), Only that the DAO method was being called.

Thank you


Cleaner version:

@RunWith(MockitoJUnitRunner.class)
public class CorrectionServiceTest {

    private static final Long VALID_ID = 123L;

    @Mock
    AddressDao addressDao;

    @InjectMocks
    private CorrectionService correctionService;

    @Test
    public void shouldCallDeleteAddress() { 
        //when
        correctionService.correct(VALID_ID);
        //then
        verify(addressDao).deleteAddress(VALID_ID);
    }
}


A simplified version of the CorrectionService class (visibility modifiers removed for simplicity).

class CorrectionService {

   AddressDao addressDao;

   CorrectionService(AddressDao addressDao) {
       this.addressDao;
   }

   void correctPerson(Long personId) {
       //Do some stuff with the addressDao here...
   }

}

In your test:

import static org.mockito.Mockito.*;

public class CorrectionServiceTest {

    @Before
    public void setUp() {
        addressDao = mock(AddressDao.class);
        correctionService = new CorrectionService(addressDao);
    }


    @Test
    public void shouldCallDeleteAddress() {
        correctionService.correct(VALID_ID);
        verify(addressDao).deleteAddress(VALID_ID);
    }
}  
0

精彩评论

暂无评论...
验证码 换一张
取 消