我是模拟测试的新手。

我想测试我的Service方法CorrectionService.correctPerson(Long personId)
该实现尚未编写,但是它将执行以下操作:
CorrectionService将调用AddressDAO方法,该方法将删除Adress具有的某些Person。一个Person有许多Address es

我不确定CorrectionServiceTest.testCorrectPerson的基本结构是什么。

也请/不确认此测试中我不需要测试是否实际删除了地址(应在AddressDaoTest中完成),只需调用DAO方法即可。

谢谢

最佳答案

CorrectionService类的简化版本(为简单起见,删除了可见性修饰符)。

class CorrectionService {

   AddressDao addressDao;

   CorrectionService(AddressDao addressDao) {
       this.addressDao;
   }

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

}

在您的测试中:
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);
    }
}

10-07 19:11