![](/img/trans.png)
[英]How to setup XUnit testing in Jetbrains Rider for ASP.NET CORE 2?
[英]Testing asp.net core 2.0 project with Xunit how to test httpget
我有一個在 Visual Studio 2017 中構建的 asp.net core 2.0 項目。我正在學習測試 asp.net core 項目的技巧,但我想知道如何在我的控制器中測試 HHTPGET 方法。
下面是我的初始控制器。
public class ValuesController : Controller
{
private Config MyConfig { get; }
private Solr Solr { get; }
private Voyager Voyager { get; }
private Messages Messages { get; }
public ValuesController(Config config, Solr solr, Voyager voyager, Messages messages)
{
MyConfig = config;
Solr = solr;
Voyager = voyager;
Messages = messages;
}
// GET api/values
[HttpGet]
[Route("/api/[Controller]")]
public IEnumerable<string> Get()
{
string version = ".NET Framework: " + Environment.Version.ToString();
string vers = "ASP.NET Core Framework: " + typeof(Controller).Assembly.GetName().Version.ToString();
return new string[] { version, vers };
}
[HttpGet]
[Route("/api/[Controller]/config")]
public JsonResult GetConfig()
{
return new JsonResult(MyConfig);
}
[HttpGet]
[Route("/api/[Controller]/solr")]
public JsonResult GetSolr()
{
return new JsonResult(Solr);
}
[HttpGet]
[Route("/api/[Controller]/voyager")]
public JsonResult GetVoyager()
{
return new JsonResult(Voyager);
}
[HttpGet]
[Route("/api/[Controller]/messages")]
public JsonResult GetMessages()
{
return new JsonResult(Messages);
}
只是想知道是否有人可以舉例說明如何測試這些路由或 HTTPGets ......
所以我發現第一步是設置一個有點通用的模擬連接,所以我創建了一個方法來通過下面的方法模擬到服務器的連接。
private CollectionsController SetupController()
{
if (controller != null)
{
controller = null;
}
if (controllerContext != null)
{
controllerContext = null;
}
controller = new CollectionsController();
controller.ControllerContext = new ControllerContext();
controllerContext = controller.ControllerContext;
controllerContext.HttpContext = new DefaultHttpContext();
//The header below is generic don't really care what the device id is
controllerContext.HttpContext.Request.Headers["device-id"] = "20317";
}
然后作為一個例子,我在下面設置了一個測試,它只檢查狀態代碼並斷言從控制器返回的對象不為空。
[Fact]
public void TestPostCollectionName()
{
valData = new ValData();
valData.value = "NewObject";
controller = SetupController();
var results = controller.PostCollectionName(valData, testCollecName);
Assert.NotNull(results);
Assert.True(controllerContext.HttpContext.Response.StatusCode == 200);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.