Я пытаюсь создать простой модульный тест с использованием инфраструктуры Ninject Moq, и по какой-то причине я не могу заставить метод установки работать правильно. Насколько я понимаю, метод установки ниже должен вводить репозиторий в класс Service с предопределенным результатом true.Установка теста Moq Unit не работает
[TestFixture]
public class ProfileService : ServiceTest
{
private readonly Mock<IRepository<Profile>> _profileRepoMock;
public ProfileService()
{
MockingKernel.Bind<IProfileService>().To<Data.Services.Profiles.ProfileService>();
_profileRepoMock = MockingKernel.GetMock<IRepository<Profile>>();
}
[Test]
public void CreateProfile()
{
var profile = new Profile()
{
Domain = "www.tog.us.com",
ProfileName = "Tog",
};
_profileRepoMock.Setup(x => x.SaveOrUpdate(profile)).Returns(true);
var profileService = MockingKernel.Get<IProfileService>();
bool verify = profileService.CreateProfile(Profile);
_profileRepoMock.Verify(repository => repository.SaveOrUpdate(profile), Times.AtLeastOnce());
Assert.AreEqual(true, verify);
}
}
Когда я пытаюсь проверить это, что я получаю эту ошибку:
Ожидаемый вызов на макет, по крайней мере один раз, но никогда не была выполнена: вместилище => repository.SaveOrUpdate (.profile)
Настроенные расстановок: х => x.SaveOrUpdate (.profile), Times.Never
Выполненные вызовы: IRepository`1.SaveOrUpdate (DynamicCms.Data.DataModels.Profile)
Вот CreateProfile метод в классе ProfileService:
public class ProfileService : IProfileService
{
private readonly IRepository<Profile> _profileRepo;
public ProfileService(IRepository<Profile> profileRepo)
{
_profileRepo = profileRepo;
}
public bool CreateProfile(ProfileViewModel profile)
{
Profile profileToCreate = new Profile
{
Domain = profile.Domain,
ProfileName = profile.Name
};
bool verify = _profileRepo.SaveOrUpdate(profileToCreate);
if (verify)
{
return true;
}
return false;
}
}
EDIT: Я заменил объект профиля передается в
_profileRepoMock.Setup(x => x.SaveOrUpdate(profile)).Returns(true);
с
_profileRepoMock.Setup(x => x.SaveOrUpdate(It.IsAny<Profile>())).Returns(true);
Этот метод работает теперь, но почему именно он не работал раньше, когда я передал один и тот же объект в методах проверки и настройки.
Оглядываясь назад, поскольку этот метод настроен для возврата определенного значения, на самом деле не имеет значения, что передается в него, но было бы неплохо узнать.
Вы можете разместить ваш файл ' Метод ProfileService.CreateProfile'? – nemesv
Все настройки, я только что добавил метод. –