【发布时间】:2016-12-18 03:27:18
【问题描述】:
我有一个正在调试的工作代码,但是在对该方法进行了一些重构之后,我的单元测试返回了 404,并且可以找出原因。
POST 方法的代码
public class HomeController : ApiController
{
[HttpPost]
public string ReturnXmlDocument(HttpRequestMessage request)
{
try
{
XDocument doc = XDocument.Load(request.Content.ReadAsStreamAsync().Result);
Stream s = new MemoryStream();
doc.Save(s);
s.Seek(0, SeekOrigin.Begin);
XmlSerializer mySerializer = new XmlSerializer(typeof(PictureModelList));
using (XmlReader newReader = XmlReader.Create(s))
{
PictureModelList obj = (PictureModelList)mySerializer.Deserialize(newReader);
string path = @"C:\testfolderforservice\";
foreach (var item in obj.PictureList)
{
File.WriteAllBytes(string.Format("{0}{1}", path, item.FileName), item.Data);
}
}
}
catch (Exception ex)
{
;
}
return "Success";
}
}
来自单元测试的代码
[TestMethod]
public void TestMethod1()
{
List<PictureModel> lPM = new List<PictureModel>();
var files = Directory.GetFiles(@"C:\source", "*.jpg");
foreach (var file in files)
{
PictureModel pm = new PictureModel();
pm.FileName = Path.GetFileName(file);
pm.Data = File.ReadAllBytes(file);
lPM.Add(pm);
}
PictureModelList pmL = new PictureModelList();
pmL.PictureList = lPM;
XmlSerializer serializer = new XmlSerializer(pmL.GetType());
StringWriter sq = new StringWriter();
serializer.Serialize(sq, pmL);
sq.Close();
string xmlData = sq.ToString();
var content = new StringContent(xmlData, Encoding.Unicode, "text/xml");
var client = new HttpClient();
var result = client.PostAsync("http://localhost/api/Home/ReturnXmlDocument", content).Result;
}
就像我之前说的,只是在 POST 方法内部进行了一些重构并执行了单元测试,PostAsync 方法返回了 404 代码。
我可以通过附加到进程来调试 POST 方法,或者我做错了一切。
【问题讨论】:
标签: c# visual-studio unit-testing model-view-controller