我想讓我的ServiceStack服務可測試。在ServiceStack中可以模擬單元測試的Request.OriginalRequest對象嗎?
目前我有:
[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()」和所有剩下的是這是在東西基類服務。有沒有一種模式/策略/方法/我錯過的東西使得這個微不足道?
這涵蓋了很多,其實。謝謝!但是,還有一件事:你知道我怎麼可以重寫受保護的成員'請求'? (我的第一個代碼塊中的第4行將失敗,NRE) – Robin 2013-04-26 10:22:47
另外...它似乎'HttpRequest'是一個密封的類,不能被嘲笑。 – Robin 2013-04-26 11:54:43
是啊,HttpReqeust是密封的我認爲你可以轉換爲HttpRequestBase呢?第12行(mockedRequestContext.Stub(x => x.Get())。Return(mockedHttpRequest))應該允許你模擬Request成員。 –
paaschpa
2013-04-26 16:51:25