Рассмотрим метод в сборке .NET:
public static string GetSecurityContextUserName()
{
//extract the username from request
string sUser = HttpContext.Current.User.Identity.Name;
//everything after the domain
sUser = sUser.Substring(sUser.IndexOf("\\") + 1).ToLower();
return sUser;
}
Я хотел бы назвать этот метод из unit test, используя фреймворк Moq. Эта сборка является частью решения webforms. unit test выглядит так, но мне не хватает кода Moq.
//arrange
string ADAccount = "BUGSBUNNY";
string fullADName = "LOONEYTUNES\BUGSBUNNY";
//act
//need to mock up the HttpContext here somehow -- using Moq.
string foundUserName = MyIdentityBL.GetSecurityContextUserName();
//assert
Assert.AreEqual(foundUserName, ADAccount, true, "Should have been the same User Identity.");
Вопрос:
- Как я могу использовать Moq для размещения поддельного объекта HttpContext с некоторым значением, например "MyDomain\MyUser"?
- Как мне связать эту подделку с моим вызовом в моем статическом методе в
MyIdentityBL.GetSecurityContextUserName()
? - Есть ли у вас предложения по улучшению этого кода/архитектуры?