使用C#我試圖單元測試控制器的操作和時間需要多長時間才能返回。我正在使用VS2012 Ultimate內置的單元測試框架。Visuals Studio 2012單元測試設置user.identity
不幸的是我也想換行我周圍的TestContext頭以及如何使用它..
一些示例代碼(我的控制器動作):
[HttpPost]
public JsonResult GetUserListFromWebService()
{
JsonResult jsonResult = new JsonResult();
WebService svc = new WebService();
jsonResult.Data = svc.GetUserList(User.Identity.Name);
return jsonResult;
}
當我嘗試單元測試此,User.Identity.Name是null,所以它引發一個異常。我目前的單元測試代碼如下所示:
[TestClass]
public class ControllerAndRepositoryActionTests {
public TestContext testContext { get; set; }
private static Repository _repository;
private username = "domain\\foobar";
private static bool active = true;
[ClassInitialize]
public static void MyClassInitialize(TestContext testContext)
{
_repository = new WebServiceRepository();
}
#region Controller method tests
[TestMethod]
public void GetUserListReturnsData()
{
Controller controller = new Controller();
var result = controller.GetUserListFromWebService();
Assert.IsNotNull(result.Data);
}
#endregion
#region service repository calls - with timing
[TestMethod]
public void GetUserListTimed()
{
testContext.BeginTimer("Overall");
var results = _repository.GetUserList(username, active);
foreach (var result in results)
{
Console.WriteLine(result.UserID);
Console.WriteLine(result.UserName);
}
testContext.EndTimer("Overall");
}
#endregion
}
我可以使用的TestContext設置將在GetUserListFromWebService呼叫最終被使用的User.Identity?
如果可以,分配TestContext的方法是什麼。當我將它作爲MyClassInitialize中的參數來設置我的成員變量時,還是應該以某種方式將它作爲參數傳遞給TestMethods?
我完全忽略了這一點,應該使用其他一些嘲諷框架嗎?