wog*_*les 3 c# moq mocking asp.net-identity
我最近重写了一个MVC 4应用程序作为MVC 5,以便我可以使用ASP.NET身份.我的旧测试设置如下(我在测试项目中没有连接字符串)
背景:
public class MyDbContext: DbContext {
public MyDbContext() : base("name=DefaultContext") {}...
Run Code Online (Sandbox Code Playgroud)
测试:
var mockVoteSet = new Mock<DbSet<Vote>>();
var mockContext = new Mock<MyDbContext> { CallBase = true };
mockContext.Setup(c => c.Votes).Returns(mockVoteSet.Object);
var service = new VoteService(mockContext.Object);
var result = service.Vote(1, "1", false);
//then assert result
Run Code Online (Sandbox Code Playgroud)
这工作得很好,我的所有测试都通过了.
因为移动我的上下文现在继承自IdentityDbContext:
public class MyDbContext: IdentityDbContext<User> {
public MyDbContext() : base("name=DefaultContext") { } ...
Run Code Online (Sandbox Code Playgroud)
我现在在测试中将上下文的模拟传递给服务时出错:
在应用程序配置文件中找不到名为"DefaultContext"的连接字符串.
我怎么能绕过这个?
已经尝试过类似的东西?
Public interface IMyDbContext
{
DbSet Votes { get; set;}
void SaveChanges();
}
Public class MyDbContext : IdentityDbContext<User> , IMyDbContext
{
Public DbSet Votes { get; set;}
Public void SaveChanges(){
//...
}
}
var mockVoteSet = new Mock<DbSet<Vote>>(){ CallBase = true };
var _context = new Mock<IMyDbContext>(MockBehavior.Strict);
_context.Setup(c => c.Votes).Returns(mockVoteSet.Object);
var service = new VoteService(_context.Object);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
664 次 |
最近记录: |