Tôi đang Mocking giao diện kho lưu trữ của mình và không chắc chắn cách thiết lập một phương thức nhận biểu thức và trả về một đối tượng? Tôi đang sử dụng Moq và NUnitMoq.Mock <T> - cách thiết lập một phương thức có biểu thức
Interface:
public interface IReadOnlyRepository : IDisposable
{
IQueryable<T> All<T>() where T : class;
T Single<T>(Expression<Func<T, bool>> expression) where T : class;
}
Thử nghiệm với IQueryable đã thiết lập, nhưng không biết làm thế nào để thiết lập T Độc thân:
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);
}
Cảm ơn bạn đã trả lời. Tôi gặp lỗi với mã ở trên: Lỗi Đối số '1': không thể chuyển đổi từ 'nhóm phương thức' thành 'System.Linq.Expressions.Expression > –
Paul
@Paul: Xin lỗi, tôi đã bỏ '()'. Hãy thử với phiên bản mới nhất và nó sẽ hoạt động. –
Cảm ơn bạn đã trả lời, đã làm việc, không lý tưởng như bạn đã đề cập, nhưng hoạt động! Cảm ơn một lần nữa. – Paul