【发布时间】:2015-05-18 07:02:37
【问题描述】:
我尝试为存储库编写单元测试。我使用 InMemoryDb (https://www.nuget.org/packages/FakeDbSet) 设置来模拟 DbSet 但我得到了异常
“表达式不是方法调用:p => p”。
我哪里错了?
try
{
var userDbSet = new InMemoryDbSet<UserModel>();
userDbSet.Add(new UserModel { Id = 1, Username = "jacek_001@wp.pl" });
userDbSet.Add(new UserModel { Id = 1, Username = "jacek_002@wp.pl" });
userDbSet.Add(new UserModel { Id = 1, Username = "jacek_003@wp.pl" });
var repositoryMock = new Mock<IDbSet<UserModel>>();
repositoryMock.Setup(p => p).Returns(() => userDbSet); // <= this line throw exception
var entitiesMock = new Mock<Entities>();
entitiesMock.Setup(p => p.Users).Returns(() => repositoryMock.Object);
return entitiesMock.Object;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
【问题讨论】:
-
你想用这条线做什么
repositoryMock.Setup(p => p).Returns(() => userDbSet);? -
您需要在-repositoryMock.Setup(p => p.SomePropertyHere)...处正确指定表达式......
-
我使用 Moq 作为模拟库。我想替换/模拟 UserModel
标签: c# .net entity-framework unit-testing mockdbset