मैं अपनी सर्विसस्टैक सेवा टेस्ट करने योग्य बनाना चाहता हूं।सर्विसस्टैक में यूनिट परीक्षणों के लिए 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()' है और जो कुछ बचा है सामान में है वह यह है कि बेस क्लास सेवा। क्या कोई पैटर्न/रणनीति/दृष्टिकोण/कुछ ऐसा है जो मुझे याद आ रहा है जो यह छोटा बनाता है?
काफी एक बहुत कुछ शामिल किया गया है कि, वास्तव में:
वहाँ में आप एक MockRequestContext है कि आप इस प्रकार का उपयोग कर सकते पा सकते हैं। धन्यवाद! एक और बात, हालांकि: क्या आप जानते हैं कि मैं संरक्षित सदस्य 'अनुरोध' को कैसे ओवरराइड कर सकता हूं? (मेरे पहले कोड ब्लॉक में लाइन 4 एनआरई के साथ असफल हो जाएगी) – Robin
इसके अलावा ... ऐसा लगता है कि 'HttpRequest' एक मुहरबंद वर्ग है और इसे मजाक नहीं किया जा सकता है। – Robin
हाँ, HttpReqeust मुहरबंद है मुझे लगता है कि आप इसके बजाय HttpRequestBase पर जा सकते हैं? लाइन 12 (mockedRequestContext.Stub (x => x.Get())। वापसी (mockedHttpRequest)) आपको अनुरोध सदस्य का नकल करने की अनुमति देनी चाहिए। –
paaschpa