Asp.net mvc 4 如何创建ASP.NET WEB API功能测试

Asp.net mvc 4 如何创建ASP.NET WEB API功能测试,asp.net-mvc-4,rest,testing,Asp.net Mvc 4,Rest,Testing,我有一个WebAPI项目,它提供了一些RESTAPI。 如何编写运行我的服务并对其执行一些HTTP请求的测试?您只需将单元测试项目添加到解决方案中即可 WebApi控制器代码示例 public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new s

我有一个WebAPI项目,它提供了一些RESTAPI。
如何编写运行我的服务并对其执行一些HTTP请求的测试?

您只需将单元测试项目添加到解决方案中即可

WebApi控制器代码示例

public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        public void Post([FromBody]string value)
        {
        }

        // PUT api/values/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }
    }
公共类值控制器:ApiController
{
//获取api/值
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
//获取api/values/5
公共字符串Get(int-id)
{
返回“值”;
}
//后api/值
公共作废帖子([FromBody]字符串值)
{
}
//将api/values/5放入
公共void Put(int id,[FromBody]字符串值)
{
}
//删除api/values/5
公共无效删除(int-id)
{
}
}
WebApi测试项目类示例

[TestClass]
    public class ValuesControllerTest
    {
        [TestMethod]
        public void Get()
        {
            // Arrange
            ValuesController controller = new ValuesController();

            // Act
            IEnumerable<string> result = controller.Get();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count());
            Assert.AreEqual("value1", result.ElementAt(0));
            Assert.AreEqual("value2", result.ElementAt(1));
        }

        [TestMethod]
        public void GetById()
        {
            // Arrange
            ValuesController controller = new ValuesController();

            // Act
            string result = controller.Get(5);

            // Assert
            Assert.AreEqual("value", result);
        }

        [TestMethod]
        public void Post()
        {
            // Arrange
            ValuesController controller = new ValuesController();

            // Act
            controller.Post("value");

            // Assert
        }

        [TestMethod]
        public void Put()
        {
            // Arrange
            ValuesController controller = new ValuesController();

            // Act
            controller.Put(5, "value");

            // Assert
        }

        [TestMethod]
        public void Delete()
        {
            // Arrange
            ValuesController controller = new ValuesController();

            // Act
            controller.Delete(5);

            // Assert
        }
    }
[TestClass]
公共类值控件测试
{
[测试方法]
公开作废获取()
{
//安排
ValuesController=新的ValuesController();
//表演
IEnumerable result=controller.Get();
//断言
Assert.IsNotNull(结果);
arest.AreEqual(2,result.Count());
Assert.AreEqual(“value1”,result.ElementAt(0));
Assert.AreEqual(“value2”,result.ElementAt(1));
}
[测试方法]
public void GetById()
{
//安排
ValuesController=新的ValuesController();
//表演
字符串结果=controller.Get(5);
//断言
断言.AreEqual(“值”,结果);
}
[测试方法]
公共空缺职位()
{
//安排
ValuesController=新的ValuesController();
//表演
控制人职务(“价值”);
//断言
}
[测试方法]
公开宣布作废
{
//安排
ValuesController=新的ValuesController();
//表演
控制器。输入(5,“值”);
//断言
}
[测试方法]
公共作废删除()
{
//安排
ValuesController=新的ValuesController();
//表演
删除(5);
//断言
}
}

那么您想编写单元测试用例还是只想测试WebApi方法?我想编写一个测试,请求WEB API方法,获得响应并检查此响应我已经更新了我的答案,并提供了详细的解释,如果您仍然面临任何问题,请告诉我,如果有帮助,请投票并接受回答:)。