私は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);
}
}
}
ある
I ')は(othercode' により使用すべての依存関係を嘲笑しましたし、すべてが残っていますが中だものですベースクラスのサービス。パターン/戦略/アプローチ/私はこれが些細なものになっていない何かがありますか?
、実際:
そこでは、次のように使用することができますMockRequestContextを見つけることができます。ありがとう!しかしもう1つのこと:保護されたメンバーの「要求」をどのように無効にできるか知っていますか? (私の最初のコードブロックの4行目はNREで失敗します) – Robin
また、 'HttpRequest'は密封されたクラスであり、嘲笑されないようです。 – Robin
ええ、HttpReqeustは封印されています。代わりにHttpRequestBaseにキャストできると思いますか? 12行目(mockedRequestContext.Stub(x => x.Get())。Return(mockedHttpRequest))リクエストメンバーをモックすることができます。 –
paaschpa