moq – OpenRasta单元测试

我即将开始研究OpenRasta项目(一个xml over http web服务). OpenRasta看起来很棒,但不幸的是,在互联网上看起来很少见.查看项目的测试方面,如果我的处理程序返回强类型对象(不是OperationResult),即:

public class PersonHandler
...
 public Person Get(int id)
 {
 ...

如何测试http状态代码? (例如,如果处理程序抛出未捕获的异常).我不确定测试的等级是什么,需要嘲笑的是什么(使用moq btw)

任何帮助,尤其是编码示例!

最佳答案 我遇到了同样的问题,并最终将我的测试编写为更高级别的集成测试,实际上通过一个简单的HttpWebRequest客户端进行真正的REST / HTTP调用.这使我能够检查HTTP响应头/状态代码,并从客户端的角度仔细检查JSON / XML序列化,这与操作是否成功同样重要.

我从所有处理程序返回OperationResult开始,并使用它们来包装强类型对象.我的处理程序都继承自一个带有一些辅助方法的基类,这使得使用用户友好的错误消息更容易返回自定义错误.我编写的代码越多,我的处理程序就越像ASP.NET MVC控制器.例如.:

    public OperationResult GetById(int id)
    {
        try
        {
            // do stuff here
            return OKResult( // some strongly-typed resource );
        }
        catch(SomeException ex)
        {
            return BadRequestResult(SomeErrorCode, ex.Message);
        }
    }

然后在测试客户端中,只需检查HTTP状态代码就很容易了.显然,这对嘲笑没有多大帮助.我不确定最好的解决方案是什么,事实上我已经偏爱这个问题,希望有人能比我更好地回答它 – 但到目前为止,这对我来说非常有效.

点赞