У меня, как мне кажется, довольно простая настройка, в которой тип поиска создается и пропускается через уровень обслуживания и в хранилище, где возвращается список типа домена.Тип поиска ничего не делает, кроме как создает дерево выражений в методе репозитория, и в основном возвращаются результаты из базы данных.Довольно просто
Интерфейс репозитория:
public interface IDoNotSolicitRepo
{
IList<DNSContract> SelectWithCriteria(DNS_Search searchriteria);
}
Служба, реализующая репозиторий:
public class DoNotSolicitService : BaseBLLService, IDoNotSolicitService
{
private readonly IDoNotSolicitRepo repo;
private readonly IPartnerService partnerService;
private readonly IDoNotSolicitReasonService dnsReasonSvc;
public DoNotSolicitService(IDoNotSolicitRepo _repo, IPartnerService _partnerSvc, IDoNotSolicitReasonService _dnsReasonSvc)
{
repo = _repo;
partnerService = _partnerSvc;
dnsReasonSvc = _dnsReasonSvc;
}
public ServiceResult<DNSContract> SelectWithCriteria(DNS_Search searchriteria)
{
var results = repo.SelectWithCriteria(searchriteria);
return ReturnServiceResult(results);
}
}
Я работаю над изучением Moq с этим проектом и могуне могу понять, должен ли я использовать Callback () или Return ().Я получаю общие баллы обоих, но ни один из них, похоже, не работает должным образом для меня в данный момент.
Тест:
[Test]
public void SelectWithCriteria_FirstName()
{
mockRepository.Setup(mr => mr.SelectWithCriteria(It.IsAny<DNS_Search>()))
.Returns((IList<DNSContract> records) => new List<DNSContract>
{
new DNSContract {FirstName = "unit", LastName = "test"},
new DNSContract {FirstName = "moq", LastName = "setup"}
});
dnsSvc = new DoNotSolicitService(mockRepository.Object, new PartnerServiceStub(), new DoNotSoicitReasonServiceStub());
var result = dnsSvc.SelectWithCriteria(new DNS_Search { FirstName = "unit" });
Assert.IsNotNull(result);
Assert.IsTrue(result.Data.Any());
}
Ошибка:
System.ArgumentException was unhandled by user code
Message=Object of type 'EP.Rest.Common.RestHelpers.DNS_Search' cannot be converted to type 'System.Collections.Generic.IList`1[EP.Rest.Domain.Contracts.DNSContract]'.
Теперь я прочитал, что метод Returns () возвращает переданный тип, поэтому я вижу, что причина этой ошибки.Но в реальном мире я хочу, чтобы другой тип вернулся.Я попытался создать делегата обратного вызова, но ничего из этого не показалось правильным.