Asp Identity UserManager仅使用Moq

时间:2015-05-04 22:10:51

标签: asp.net-mvc unit-testing moq asp.net-identity

我正在使用Moq和Asp Identity但是当我使用UserManager时这只得到异步方法,这是我的代码:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Person person)
    {
        if (_personRepository.Exist(person.Identificaction))
        {        
            person.IdUserCreate = _userManager.FindByName(User.Identity.Name).Id;

            try
            {
                _personRepository.Save(person);
            }
            catch (Exception)
            {
               ////
            }
        }
        else
              ///


        return RedirectToAction("Create");
    }

我的PersonRepository,

公共..... {         rgContext _context = new rgContext();

    public void Save(person Entity)
    {
        _context.Person.Add(Entity);
        _context.SaveChanges();
    }

}

测试方法:

        [TestMethod]
    public void CreateVoter_Should_Save_Voter()
    {


        var MockPersonRepository = new Mock<IEntity<Person>>();

        var UserManger = new Mock<rgUserManager>();

        MockPersonRepository.Setup(c => c.Exist("2222222")).Returns(true);


        UserManger.Setup(c => c.**FindByNameAsync**("admin@admin.com")).Returns(Task.FromResult(new rgUser() { Id = 1 }));

        //////


    }

我在这里宣布UserManger时,只有异步方法,例如:

  • FindAsync
  • FindByEmailAsync
  • ....
  •  *

我需要使用同步方法,因为这个应用程序非常小,但这就是踢我的......

我希望你能提供帮助:p

Pd:我正在使用统一的DI。

1 个答案:

答案 0 :(得分:2)

I know this post is old, but do you have your using statement in the class?

using Microsoft.AspNet.Identity;