Chciałbym przetestować usługę ServiceStack.W ServiceStack można sfałszować obiekt Request.OriginalRequest dla testów jednostkowych?
Obecnie mam:
[RequireFormsAuthentication]
public object Delete(DeleteRequest request)
{
var originalRequest = (HttpRequest)Request.OriginalRequest;
var identity = originalRequest.RequestContext.HttpContext.User.Identity;
return othercode(identity);
}
Gdzie RequireFormsAuthentication jest
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);
}
}
}
byłem wyśmiewany wszystkie zależności używane przez 'othercode()' i wszystko, co pozostaje, to rzeczy, które znajduje się w Usługa klasy podstawowej. Czy istnieje wzorzec/strategia/podejście/coś, czego mi brakuje, czyni to banalnym?
To obejmuje sporo, faktycznie. Dzięki! Jeszcze jedno: czy wiesz, w jaki sposób mogę zastąpić "Wniosek" chronionego członka? (linia 4 w moim pierwszym bloku kodu zawiedzie się z NRE) – Robin
Również ... wydaje się, że "HttpRequest" jest klasą zamkniętą i nie można jej wyśmiać. – Robin
Tak, HttpReqeust jest zaplombowany. Myślę, że możesz zamiast tego przesłać do HttpRequestBase? Wiersz 12 (mockedRequestContext.Stub (x => x.Get()). Return (mockedHttpRequest)) Powinien pozwolić na wyśmiewanie członka Request. –
paaschpa