我正在寻找一个示例代码,使用C#.net
向Web服务(SOAP)发送请求
获取响应,然后自动验证响应
例:http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit 将celcius数据发送到此Web服务并获得一些响应,然后使用预期值验证此响应。
我希望使用C#nunit框架以编程方式执行此操作 有谁知道如何实现这个目标?
答案 0 :(得分:0)
Web服务本身应该没有值得测试的逻辑。
您无法轻松测试网络服务电话,也不应该。这是框架的责任。
您的Web服务应该是完成实际工作的类的包装器。然后,您将使用逻辑进行单元测试,而不是Web服务。
在你的例子中,你应该有一个班级负责将华氏温度转换为摄氏温度。执行此操作的公共方法将由您的单元测试覆盖。
您调用实际执行转换的终点(例如,.asmx文件中的方法)只会调用上面的代码。
答案 1 :(得分:0)
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
using NUnit.Framework;
namespace Examples.System.Net
{
public class WebRequestPostExample
{
public static void Main()
{
String b = "OK";
// Create a request using a URL that can receive a post.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("your end point here");
request.Headers.Add ("SOAPAction", "some soap action here");
request.ContentType = "text/xml;charset=\"utf-8\"";
request.Accept = "text/xml";
request.Method = "POST";
// Set the Method property of the request to POST.
request.Method = "POST";
// Create POST data and convert it to a byte array.
string postData = @"<s:Envelope xmlns:s="Som request that you want to send";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteArray, 0, byteArray.Length);
int a = 0;
stream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Assert.AreEqual(response.StatusCode, b, "Pass");
Console.WriteLine(((HttpWebResponse)response).StatusDescription);