小编Jer*_*der的帖子

使用Microsoft Fakes进行模拟

我已经使用需要模拟的异步(.net 4.5)方法密封了类.我正在使用Microsoft Fakes,所以他们将"垫片".以下代码是我需要做的一个例子.它构建但运行时,调用"Login"控制器方法中的"LoginAsync"方法,测试挂起.

  [TestMethod]
  public async Task LoginPost_Returns() {

     using (ShimsContext.Create()) {
        var c = new TestController();
        var user=new User();

        Fakes.ShimUserManager.AllInstances.LoginAsyncString = (um, u) => new Task<IUser>(() => { return user; });

        //call controller method  
        var result = await c.Login(model, returnUrl) as ViewResult;
        var expectedViewName = "Index";
        Assert.IsNotNull(result);
        Assert.AreEqual(expectedViewName, result.ViewName);
     }

//Controller method
public async Task<ActionResult> Login(LoginModel model, string returnUrl) {
     var user = await UserManager.LoginAsync(model.UserName, model.password);
     return View();
}
Run Code Online (Sandbox Code Playgroud)

.net c# async-await microsoft-fakes

3
推荐指数
1
解决办法
4083
查看次数

标签 统计

.net ×1

async-await ×1

c# ×1

microsoft-fakes ×1