내 단위 테스트에서 Moq을 사용하고 있으며, 내 테스트가 실패한 이유를 알 수 없습니다. 여기 모의 테스트가 실패한 곳을 찾을 수 없습니다.
내가Moq.MockVerificationException을지고있어 오류의 다음 설정이 일치하지 않은 :
IGroupRepository R => r.Delete (It.Is (음 => um.Equals()))
다음은 테스트하려는 서비스입니다.
서비스
public GroupService (IGroupRepository groupRepository)
{
_groupModelToViewModelMapper = new AutoMapper<GroupModel, GroupViewModel>();
_groupViewModelToModelMapper = new AutoMapper<GroupViewModel, GroupModel>();
_groupRepository = groupRepository;
}
public void Delete(GroupViewModel viewModel)
{
_groupRepository.Delete(_groupViewModelToModelMapper.BuildFrom(viewModel));
}
테스트
[Test]
public void FAILING_TEST()
{
// Setup the Mock GroupRepository
_groupRepository.Setup(r => r.Delete(It.Is<GroupModel>(um => um.Equals(_groupModel))));
var groupService = new GroupService(_groupRepository.Object);
// execute
groupService.Delete(_groupViewModel);
// assert
_groupRepository.VerifyAll();
}
나는 내가 AutoMapper를 주입 경우 테스트를 통과, 밖으로 알아낼 수 없습니다 것은. 기본적으로 매핑되는 서비스 모델과 일대일 방식이므로 automapper 주입에 대한 요점은 보이지 않습니다. 이 유효하다면
서비스
public GroupService(IGroupRepository groupRepository,
IAutoMapper<GroupViewModel, GroupModel> groupViewModelToModelMapper,
IAutoMapper<GroupModel, GroupViewModel> groupModelToViewModelMapper)
{
_groupModelToViewModelMapper = groupModelToViewModelMapper;
_groupRepository = groupRepository;
_groupViewModelToModelMapper = groupViewModelToModelMapper;
}
public void Delete(GroupViewModel viewModel)
{
_groupRepository.Delete(_groupViewModelToModelMapper.BuildFrom(viewModel));
}
테스트 또한
[Test]
public void PASSING_TEST()
{
// Setup the Mock GroupRepository
_groupRepository.Setup(r => r.Delete(It.Is<GroupModel>(um => um.Equals(_groupModel))));
// Setup the Mock ModelMapper
_viewModelToModelMapper.Setup(vmm => vmm.BuildFrom(It.Is<GroupViewModel>(u => u.Equals(_groupViewModel))))
.Returns(_groupModel);
var groupService = new GroupService(_groupRepository.Object, _viewModelToModelMapper.Object, _modelToViewModelMapper.Object);
// execute
groupService.Delete(_groupViewModel);
// assert
_groupRepository.VerifyAll();
_viewModelToModelMapper.VerifyAll();
}
는 여기에 테스트 설정입니다.
private GroupModel _groupModel;
private List<GroupModel> _groupModels;
private GroupViewModel _groupViewModel;
private List<GroupViewModel> _groupViewModels;
private Mock<IGroupRepository> _groupRepository;
private Mock<IAutoMapper<GroupViewModel, GroupModel>> _viewModelToModelMapper;
private Mock<IAutoMapper<GroupModel, GroupViewModel>> _modelToViewModelMapper;
[SetUp]
public void SetUp()
{
_groupModel = new GroupModel();
_groupModels = new List<GroupModel>();
_groupViewModel = new GroupViewModel();
_groupViewModels = new List<GroupViewModel>();
_groupRepository = new Mock<IGroupRepository>();
_viewModelToModelMapper = new Mock<IAutoMapper<GroupViewModel, GroupModel>>();
_modelToViewModelMapper = new Mock<IAutoMapper<GroupModel, GroupViewModel>>();
}
누군가가 나를 조롱하는 것을 도와 줄 수 있습니까?
랜덤 추측 - 테스트 에서처럼 명시 적으로 반환되는 대신 모델이 생성 될 때'Equals'는 값으로 객체를 비교하지 않으며'um => um.Equals (_groupModel)'는 실패합니다. –
그래서 modelMappers를 삽입했지만 서비스 생성자에서 인스턴스화하면 통과하지 않는 이유는 무엇입니까? –
'_groupModel.(_groupModel)은 디폴트 포인터 비교 (_groupModel을 단순히 반환하는 매퍼를 삽입 할 때 일어나는 일)와 동일하지만'_groupModel.Equals (new Model (fromSomeData))'는 항상 기본 포인터 비교를 실패합니다 ... –