Kłaniam się interfejsem mojego repozytorium i nie jestem pewien jak skonfigurować metodę, która pobiera wyrażenie i zwraca obiekt? Używam Moq i NUnitMoq.Mock - jak ustawić metodę, która przyjmuje wyrażenie
Interfejs:
public interface IReadOnlyRepository : IDisposable
{
IQueryable<T> All<T>() where T : class;
T Single<T>(Expression<Func<T, bool>> expression) where T : class;
}
test z IQueryable już zainstalowane, ale nie wiem jak ustawić T Single:
private Moq.Mock<IReadOnlyRepository> _mockRepos;
private AdminController _controller;
[SetUp]
public void SetUp()
{
var allPages = new List<Page>();
for (var i = 0; i < 10; i++)
{
allPages.Add(new Page { Id = i, Title = "Page Title " + i, Slug = "Page-Title-" + i, Content = "Page " + i + " on page content." });
}
_mockRepos = new Moq.Mock<IReadOnlyRepository>();
_mockRepos.Setup(x => x.All<Page>()).Returns(allPages.AsQueryable());
//Not sure what to do here???
_mockRepos.Setup(x => x.Single<Page>()
//----
_controller = new AdminController(_mockRepos.Object);
}
Dzięki za odpowiedź. Otrzymuję błąd z powyższym kodem: Błąd Argument "1": nie można przekonwertować z "grupy metod" na "System.Linq.Expressions.Expression > –
Paul
@Paul: Przepraszam, upuściłem '()'. Wypróbuj najnowszą wersję i powinna działać. –
Dzięki za odpowiedź, która zadziałała, nie idealna jak wspomniałeś, ale działa! Dzięki jeszcze raz. – Paul