【发布时间】:2015-05-12 00:06:29
【问题描述】:
我正在寻找一些关于为下面的代码编写单元测试的建议。除了实现之外(这不是我的代码,但我的任务是为它追溯编写一些测试)有人可以建议我如何测试它吗?我没有使用 nUnit 或类似的框架;我正在使用 Visual Studio 中内置的测试工具。
我对编写单元测试还很陌生,但我想我至少应该测试以下内容:
- 有效响应传递到
SaveFormBrokerResponse()方法 - 测试
catch()抛出的有效异常 - 正在测试已启动的
Task,但不知道该怎么做
我已经从这个函数中删除了一点,主要是与一些对象的实例化和填充有关:
public void SaveResponse(IForm form, bool isLive, HttpRequestBase request)
{
try
{
var response = new FormBrokerResponses();
// Initialize some vars on response
using (var memory = new MemoryStream())
{
var serializer = new DataContractSerializer(typeof(FormKeyValue[]));
serializer.WriteObject(memory, request.Form.AllKeys.Select(r => new FormKeyValue(r, request.Form[r])).ToArray());
memory.Flush();
memory.Seek(0, SeekOrigin.Begin);
response.Values = Encoding.UTF8.GetString(memory.ToArray());
}
_dataHandler.SaveFormBrokerResponses(response);
}
catch (Exception ex)
{
throw new Exception("boom explosions");
}
Task.Factory.StartNew(() => DispatchFormResponseViaEmail(form, isLive, request.Form.AllKeys.ToDictionary(r => r, r => (object)request.Form[r])));
}
我意识到测试 void 实现是棘手且有问题的,并且这里存在一些集成测试问题,但这表示我(目前)无法更改实现并且需要为我拥有的内容编写测试。
【问题讨论】:
标签: c# unit-testing testing visual-studio-2013