现在我有:
[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对象进行单元测试?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)