Asp.net 为什么我的Web服务函数在使用Fiddler或其他应用程序调用时可以访问SQL(通过实体/标识),但在单元测试中失败?

Asp.net 为什么我的Web服务函数在使用Fiddler或其他应用程序调用时可以访问SQL(通过实体/标识),但在单元测试中失败?,asp.net,web-services,unit-testing,Asp.net,Web Services,Unit Testing,我有一个AccountController,它调用Identity.UserManager来注册一个新帐户。如果我直接用fiddler或其他c#应用程序调用帐户控制器,效果会很好。然而,当我试图通过单元测试来实现它时。服务已被调用/访问,但当它尝试插入记录时,会显示:“无法连接到服务器-与网络相关或特定于实例的错误” 公共类AccountController:ApicController { 公共IHttpActionResult Post([FromBody]字符串值) { N

我有一个AccountController,它调用Identity.UserManager来注册一个新帐户。如果我直接用fiddler或其他c#应用程序调用帐户控制器,效果会很好。然而,当我试图通过单元测试来实现它时。服务已被调用/访问,但当它尝试插入记录时,会显示:“无法连接到服务器-与网络相关或特定于实例的错误”

公共类AccountController:ApicController
{        
公共IHttpActionResult Post([FromBody]字符串值)
{
NewUserBase用户=(NewUserBase)JsonConvert.DeserializeObject(值);
IdentityUser u=新IdentityUser();
u、 用户名=user.UserName;
u、 PasswordHash=user.Password;
返回寄存器同步(u);
}
}
公共类AuthRepository:IDisposable
{
公共标识结果注册表同步(IdentityUser IdentityUser)
{
尝试
{
//当使用webclient的c#应用程序fiddler调用Account controller时,该行工作,但当从单元测试调用Account controller时失败
结果=_userManager.Create(IdentityUser,IdentityUser.PasswordHash);
返回结果;
}
捕获(DbEntityValidationException ex)
{
返回null;
}
}
}
[测试类]
公共类TestAccountController
{
[测试方法]
public void CreateUser_ShouldCreateANewUser()
{
字符串userNameToCreate=“TestUserForUnitTest”;
字符串password=“password123”;
var controller=new AccountController();
controller.Post(“{\”用户名\“:\”+用户名创建+“\”,\”密码\“:\”+密码+“\”}”);
OAuthService.AuthRepository authRepo=新的OAuthService.AuthRepository();
var user=authRepo.FindUser(userNameToCreate,password);
}
}

如果要使其工作,您需要模拟您的请求

var request = new Mock<HttpRequestBase>();
request.SetupGet(x => x.IsAuthenticated).Returns(true) 
var请求=new Mock();
request.SetupGet(x=>x.IsAuthenticated)。返回(true)

请从另一个用户处查看本文

您是否尝试以管理员身份运行Visual Studio,然后测试代码?刚刚尝试过。同样的问题。当我单步查看IdentityDbContext的代码时,它会超时以建立db连接。您需要模拟请求。请看这篇文章上帝保佑你,你能把它写下来作为一个答案@Yuri,这样我就可以把它标记为一个答案。
var request = new Mock<HttpRequestBase>();
request.SetupGet(x => x.IsAuthenticated).Returns(true)