c# – 在ServiceStack中是否可以模拟Request.OriginalRequest对象进行单元测试?

c# – 在ServiceStack中是否可以模拟Request.OriginalRequest对象进行单元测试?,第1张

概述我想让我的ServiceStack服务可测试. 现在我有: [RequireFormsAuthentication]public object Delete(DeleteRequest request){ var originalRequest = (HttpRequest)Request.OriginalRequest; var identity = originalRe 我想让我的ServiceStack服务可测试.

现在我有:

[RequireFormsAuthentication]public object Delete(DeleteRequest request){     var originalRequest = (httpRequest)Request.OriginalRequest;     var IDentity = originalRequest.RequestContext.httpContext.User.IDentity;     return othercode(IDentity);}

RequireFormsAuthentication的位置

public class RequireFormsAuthenticationAttribute : RequestFilterattribute{    public overrIDe voID Execute(IhttpRequest req,IhttpResponse res,object requestDto)    {        var originalRequest = (httpRequest)req.OriginalRequest;        var IDentity = originalRequest.RequestContext.httpContext.User.IDentity;        if (!IDentity.IsAuthenticated)        {            res.StatusCode = (int)httpStatusCode.ForbIDden;            res.EndServiceStackRequest(skipheaders: true);        }    }}

我已经嘲笑了’othercode()’使用的所有依赖项,剩下的就是基类Service中的东西.是否有一种模式/策略/方法/我缺少的东西使这个微不足道?

解决方法 我为不使用moq而道歉…已经使用RhinoMocks完成了一些 *** 作.我认为这个概念应该转移到moq. This可能是一个很好的资源以及这个 this.

无论如何,我认为下面的测试代码应该让你开始.模拟Request.OriginalRequest的缝隙是用模拟对象替换Service.RequestContext.然后你只需要模仿除此之外的一切.这将是很多’嘲弄’,如果你重复自己’你是在嘲笑我’每次你嘲笑一个课程,这几乎是愉快的.

[Test]public voID testsomethign(){    var mockedRequestContext = MockRepository.GenerateMock<IRequestContext>();    var mockedhttpRequest = MockRepository.GenerateMock<IhttpRequest>();    var mockedOriginalRequest = MockRepository.GenerateMock<httpRequestBase>();    var mockedOriginalRequestContext = MockRepository.GenerateMock<RequestContext>();    mockedOriginalRequest.Stub(x => x.RequestContext).Return(mockedOriginalRequestContext);    mockedhttpRequest.Stub(x => x.OriginalRequest).Return(mockedOriginalRequest);    mockedRequestContext.Stub(x => x.Get<IhttpRequest>()).Return(mockedhttpRequest);    var service = new ServiceTests()    {        RequestContext = mockedRequestContext    };    service.Delete(new DeleteRequest());}
总结

以上是内存溢出为你收集整理的c# – 在ServiceStack中是否可以模拟Request.OriginalRequest对象进行单元测试?全部内容,希望文章能够帮你解决c# – 在ServiceStack中是否可以模拟Request.OriginalRequest对象进行单元测试?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存