2

WCF JSON サービスをテストするにはどうすればよいですか。このサービスの単体テストのようなものを作成したいと考えています。このようなもののためのチュートリアルはありますか?{somedata:abc,foo:boo} のような JSON オブジェクトを自分で作成することに最も興味があります。

4

1 に答える 1

3

これは、あなたが始めるためのリンクです。

http://www.entechsolutions.com/wcf-web-service-for-soap-json-and-xml-with-unit-tests

「-JSONデータ構造に一致する動的クラスを作成します-JSONにシリアル化します-jsonをWebサービスに送信します-動的オブジェクトへの応答を非シリアル化します-応答に期待した値があることを確認します」

役職

[Test]
public void Add_WhenMethodPost_And_ValidApiKey_ReturnsSum()
{
var addRequest = new
{
    Value1 = 5,
    Value2 = 11,
    ApiKey = Const.ValidApiKey
};

var url = string.Format("{0}/json/add", Const.WebServiceUrl);
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";

var jsSerializer = new JavaScriptSerializer();
var jsonAddRequest = jsSerializer.Serialize(addRequest);

var writer = new StreamWriter(request.GetRequestStream());
writer.Write(jsonAddRequest);
writer.Close();

var httpWebResponse = (HttpWebResponse)request.GetResponse();

string jsonString;
using (var sr = new StreamReader(httpWebResponse.GetResponseStream()))
{
    jsonString = sr.ReadToEnd();
}

var jsonAddResponse = jsSerializer.Deserialize<dynamic>(jsonString);

Assert.AreEqual(16, jsonAddResponse["Sum"]);
}

得る

[Test]
public void Add_WhenMethodGet_And_ValidApiKey_ReturnsSum()
{
 var url = string.Format("{0}/json/add?value1={1}&amp;value2={2}&amp;apiKey={3}", Const.WebServiceUrl, 5, 11,
                         Const.ValidApiKey);
 var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
 httpWebRequest.Method = WebRequestMethods.Http.Get;
 httpWebRequest.Accept = "application/json";

 string jsonString;
 var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

 using (var sr = new StreamReader(httpWebResponse.GetResponseStream()))
 {
     jsonString = sr.ReadToEnd();
 }

 var jsSerializer = new JavaScriptSerializer();
 var jsonAddResponse = jsSerializer.Deserialize<dynamic>(jsonString);

 Assert.AreEqual(16, jsonAddResponse["Sum"]);
 }
于 2012-04-23T16:30:39.047 に答える