Per*_*ion 16 c# asp.net asp.net-web-api
我正在开发ASP.NET Web Api和ASP.NET网站.该网站将使用Web Api,移动应用程序也将通过REST使用Web Api.
分别开发这两个很好,但我现在正处于我想从网站开始测试Web Api的阶段,最好是在视觉工作室内.例如,我有一个页面,我有一个表单,完成后会调用我的Web Api将用户添加到数据库.上传这些在线进行测试自然是不可能的.
那么这里最好的做法是什么?你能简单地从网站项目(Aspx)中引用Web Api,还是有另一种方法可以解决这个问题.
moh*_*sti 12
对Web API控制器和操作的访问基于URL.因此,现在它们处于单独的项目中,您需要同时运行这两个项目,以使您的API可用于MVC项目.
顺便说一句,您应该为您的web api项目启用CORS,以便您可以从MVC项目访问它.
这取决于你想测试什么。如果您想简单地测试控制器实现,您可以创建一个测试项目并引用该项目,手动实例化控制器,然后在测试中调用它们。
如果您想通过网络进行集成测试,您可以自行托管 Web api 服务。然后安装web api客户端包Install-Package Microsoft.AspNet.WebApi.Client然后在测试项目中
示例链接和手动实例化(来自链接):
[TestClass]
public class TestSimpleProductController
{
[TestMethod]
public void GetAllProducts_ShouldReturnAllProducts()
{
var testProducts = GetTestProducts();
var controller = new SimpleProductController(testProducts);
var result = controller.GetAllProducts() as List<Product>;
Assert.AreEqual(testProducts.Count, result.Count);
}
Run Code Online (Sandbox Code Playgroud)
使用 Web API 客户端的示例(来自链接):
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// New code:
HttpResponseMessage response = await client.GetAsync("api/products/1");
if (response.IsSuccessStatusCode)
{
Product product = await response.Content.ReadAsAsync>Product>();
Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
}
}
Run Code Online (Sandbox Code Playgroud)
对于自托管服务:
http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
对于Web Api 客户端:
Install-Package Microsoft.AspNet.WebApi.Client
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23909 次 |
| 最近记录: |