একটি ইউনিট পরীক্ষায় এইচটিটিপি কনটেক্সট.সকালীন.সেশন সেট করা হচ্ছে


185

আমার একটি ওয়েব সার্ভিস রয়েছে আমি ইউনিট পরীক্ষার চেষ্টা করছি। পরিষেবাটিতে এটি এর HttpContextমতো বিভিন্ন মানকে টানছে :

 m_password = (string)HttpContext.Current.Session["CustomerId"];
 m_userID = (string)HttpContext.Current.Session["CustomerUrl"];

ইউনিট পরীক্ষায় আমি একটি সাধারণ কর্মীর অনুরোধ ব্যবহার করে প্রসঙ্গ তৈরি করছি, এরকম:

SimpleWorkerRequest request = new SimpleWorkerRequest("", "", "", null, new StringWriter());
HttpContext context = new HttpContext(request);
HttpContext.Current = context;

যাইহোক, যখনই আমি এর মানগুলি সেট করার চেষ্টা করি HttpContext.Current.Session

HttpContext.Current.Session["CustomerId"] = "customer1";
HttpContext.Current.Session["CustomerUrl"] = "customer1Url";

আমি নাল উল্লেখ যে নাল রেফারেন্স পেতে HttpContext.Current.Session

ইউনিট পরীক্ষার মধ্যে বর্তমান সেশনটি শুরু করার কোনও উপায় আছে কি?


আপনি কি এই পদ্ধতিটি ব্যবহার করে দেখেছেন ?
রাজ রঞ্জন

আপনি যদি পারেন তবে HTTPContextBase ব্যবহার করুন ।
jrummell

উত্তর:


105

আমরা উপহাস ছিল HttpContextএকটি ব্যবহার করে HttpContextManagerএবং সেইসাথে আমাদের অ্যাপ্লিকেশন থেকে এবং কলিং কারখানা ইউনিট পরীক্ষা

public class HttpContextManager 
{
    private static HttpContextBase m_context;
    public static HttpContextBase Current
    {
        get
        {
            if (m_context != null)
                return m_context;

            if (HttpContext.Current == null)
                throw new InvalidOperationException("HttpContext not available");

            return new HttpContextWrapper(HttpContext.Current);
        }
    }

    public static void SetCurrentContext(HttpContextBase context)
    {
        m_context = context;
    }
}

এর পরে আপনি কোনো কল প্রতিস্থাপন করবে HttpContext.Currentসঙ্গে HttpContextManager.Currentএবং একই পদ্ধতি এক্সেস আছে। তারপরে আপনি যখন পরীক্ষা করছেন তখন আপনি অ্যাক্সেসও করতে পারেন এবং HttpContextManagerআপনার প্রত্যাশাগুলি উপহাস করতে পারেন

এটি মোক ব্যবহার করে একটি উদাহরণ :

private HttpContextBase GetMockedHttpContext()
{
    var context = new Mock<HttpContextBase>();
    var request = new Mock<HttpRequestBase>();
    var response = new Mock<HttpResponseBase>();
    var session = new Mock<HttpSessionStateBase>();
    var server = new Mock<HttpServerUtilityBase>();
    var user = new Mock<IPrincipal>();
    var identity = new Mock<IIdentity>();
    var urlHelper = new Mock<UrlHelper>();

    var routes = new RouteCollection();
    MvcApplication.RegisterRoutes(routes);
    var requestContext = new Mock<RequestContext>();
    requestContext.Setup(x => x.HttpContext).Returns(context.Object);
    context.Setup(ctx => ctx.Request).Returns(request.Object);
    context.Setup(ctx => ctx.Response).Returns(response.Object);
    context.Setup(ctx => ctx.Session).Returns(session.Object);
    context.Setup(ctx => ctx.Server).Returns(server.Object);
    context.Setup(ctx => ctx.User).Returns(user.Object);
    user.Setup(ctx => ctx.Identity).Returns(identity.Object);
    identity.Setup(id => id.IsAuthenticated).Returns(true);
    identity.Setup(id => id.Name).Returns("test");
    request.Setup(req => req.Url).Returns(new Uri("http://www.google.com"));
    request.Setup(req => req.RequestContext).Returns(requestContext.Object);
    requestContext.Setup(x => x.RouteData).Returns(new RouteData());
    request.SetupGet(req => req.Headers).Returns(new NameValueCollection());

    return context.Object;
}

এবং তারপরে এটি আপনার ইউনিট পরীক্ষার মধ্যে ব্যবহার করতে, আমি এটি আমার পরীক্ষার উদ্যোগ পদ্ধতিতে কল করি

HttpContextManager.SetCurrentContext(GetMockedHttpContext());

তারপরে আপনি উপরের পদ্ধতিতে সেশন থেকে প্রত্যাশিত ফলাফল যুক্ত করতে পারেন যা আপনি নিজের ওয়েব পরিষেবায় উপলব্ধ হবেন বলে আশা করছেন।


1
তবে এটি
সিম্পল

তিনি এইচটিটিপি কনটেক্সটকে উপহাস করার চেষ্টা করছিলেন যাতে তার সিম্পল ওয়ার্কারআরকেস্টটি এইচটিটিপি কনটেক্সট থেকে মানগুলিতে অ্যাক্সেস পেতে পারে, তিনি তার সেবার মধ্যে এইচটিটিপি কনটেক্সট ফ্যাক্টরিটি ব্যবহার করবেন
অ্যান্টনি শ

এটা কি ইচ্ছাকৃত যে ব্যাকিং ফিল্ডটি m_context কেবল একটি উপহাসের প্রসঙ্গে (যখন সেটকর্ন্টকন্টেক্সটের মাধ্যমে সেট করা হবে) ফিরে আসে এবং আসল এইচটিটিপি কনটেক্সট-এর জন্য বর্তমানের প্রতিটি কলের জন্য একটি মোড়ক তৈরি করা হয়?
স্টিফেন মূল্য

হ্যাঁ তাই হয়। এম_কনেক্সট হ'ল এইচটিটিপি কনটেক্সটবেস টাইপ করে এবং ফেরত এইচটিটিপি কনটেক্সটওয়্যার্পেরটি এইচটিটিপি কনটেক্সটবেসকে বর্তমান এইচটিপিপি কনটেক্সট-এর সাথে রিটার্ন দেয়
অ্যান্টনি শ

1
HttpContextManagerএর চেয়ে আরও ভাল নাম হবে HttpContextSourceতবে আমি HttpContextFactoryভ্রান্ত ading
প্রোগ্রামিংয়ের অধ্যাপক

298

আপনি এটির HttpContextমতো একটি নতুন তৈরি করে "এটি জাল" করতে পারেন :

http://www.necronet.org/archive/2010/07/28/unit-testing-code-that-uses-httpcontext-current-session.aspx

আমি সেই কোডটি নিয়েছি এবং এটির মতো একটি স্ট্যাটিক সহায়ক শ্রেণিতে রেখেছি:

public static HttpContext FakeHttpContext()
{
    var httpRequest = new HttpRequest("", "http://example.com/", "");
    var stringWriter = new StringWriter();
    var httpResponse = new HttpResponse(stringWriter);
    var httpContext = new HttpContext(httpRequest, httpResponse);

    var sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(),
                                            new HttpStaticObjectsCollection(), 10, true,
                                            HttpCookieMode.AutoDetect,
                                            SessionStateMode.InProc, false);

    httpContext.Items["AspSession"] = typeof(HttpSessionState).GetConstructor(
                                BindingFlags.NonPublic | BindingFlags.Instance,
                                null, CallingConventions.Standard,
                                new[] { typeof(HttpSessionStateContainer) },
                                null)
                        .Invoke(new object[] { sessionContainer });

    return httpContext;
}

অথবা এর পরিবর্তে প্রতিফলন ব্যবহার করে নতুন গঠন করা এর HttpSessionStateউদাহরণ হিসেবে বলা যায়, আপনি শুধু আপনার সংযুক্ত করতে পারেন HttpSessionStateContainerথেকে HttpContext(প্রতি ব্রেন্ট এম বানান এর মন্তব্য হিসাবে):

SessionStateUtility.AddHttpSessionStateToContext(httpContext, sessionContainer);

এবং তারপরে আপনি এটিকে আপনার ইউনিট পরীক্ষায় যেমন কল করতে পারেন:

HttpContext.Current = MockHelper.FakeHttpContext();

24
আমি এই উত্তরটি গ্রহণযোগ্যটির চেয়ে ভাল পছন্দ করি কারণ আপনার পরীক্ষার ক্রিয়াকলাপগুলিকে সমর্থন করার জন্য আপনার উত্পাদন কোড পরিবর্তন করা খারাপ অভ্যাস। মঞ্জুর, আপনার প্রোডাকশন কোডটির মতো তৃতীয় পক্ষের নাম স্থানগুলি বিমূর্ত করা উচিত, তবে আপনি যখন লিগ্যাসি কোড নিয়ে কাজ করছেন তখন আপনার কাছে সর্বদা এই নিয়ন্ত্রণ বা পুনরায় ফ্যাক্টর করার বিলাসিতা থাকে না।
শন গ্লোভার

29
নতুন এইচটিটিপিএসসেশনস্টেট উদাহরণটি তৈরি করতে আপনাকে প্রতিবিম্বটি ব্যবহার করতে হবে না। আপনি সেশনস্টেট ইউটিলিটি ব্যবহার করে আপনার এইচটিটিপিএসশনস্টেট কনটেনারকে কেবল এইচটিটিপিএসসেন্টস্টেট কনটেনারটি সংযুক্ত করতে পারেন dএইচটিডিটিএসটিএসটিস্টেটটোকন্টেক্সট।
ব্রেন্ট এম স্পেল

স্ট্যান্ডিক পদ্ধতি হ'ল মকহেল্পার হ'ল ক্লাসের নাম, আপনি যে নামটি পছন্দ করেন তা ব্যবহার করতে পারেন।
মিলক্স

আমি আপনার উত্তরটি প্রয়োগ করার চেষ্টা করেছি কিন্তু সেশনটি এখনও শূন্য। আপনি কি দয়া করে আমার পোস্ট stackoverflow.com/questions/23586765/… এক নজরে দেখুন ? আপনাকে ধন্যবাদ
জো

Server.MapPath()আপনি যদি এটি ব্যবহার করেন তবে কাজ করবে না।
ইয়াক

45

মিলক্স সলিউশন গ্রহণযোগ্য একটি আইএমএইচওর চেয়ে ভাল তবে ক্যোরিস্ট্রিংয়ের সাথে ইউআরএল পরিচালনা করার সময় আমার এই বাস্তবায়নে কিছু সমস্যা হয়েছিল

কোনও url এর সাথে এটি সঠিকভাবে কাজ করতে এবং প্রতিবিম্ব এড়ানোর জন্য আমি কিছু পরিবর্তন করেছি।

public static HttpContext FakeHttpContext(string url)
{
    var uri = new Uri(url);
    var httpRequest = new HttpRequest(string.Empty, uri.ToString(),
                                        uri.Query.TrimStart('?'));
    var stringWriter = new StringWriter();
    var httpResponse = new HttpResponse(stringWriter);
    var httpContext = new HttpContext(httpRequest, httpResponse);

    var sessionContainer = new HttpSessionStateContainer("id",
                                    new SessionStateItemCollection(),
                                    new HttpStaticObjectsCollection(),
                                    10, true, HttpCookieMode.AutoDetect,
                                    SessionStateMode.InProc, false);

    SessionStateUtility.AddHttpSessionStateToContext(
                                         httpContext, sessionContainer);

    return httpContext;
}

এটি আপনাকে জাল করতে দেয় httpContext.Session, কোনও ধারণা কীভাবে এটি করতে পারে httpContext.Application?
কাইলমিট

39

আমি কিছুক্ষণ আগে এ সম্পর্কে কিছু জেনেছি।

ইউনিট টেস্টিং এইচটিটিপি কনটেক্সট.কন্টেনার.সেশন এমভিসি 3 .নেটে

আশা করি এটা সাহায্য করবে.

[TestInitialize]
public void TestSetup()
{
    // We need to setup the Current HTTP Context as follows:            

    // Step 1: Setup the HTTP Request
    var httpRequest = new HttpRequest("", "http://localhost/", "");

    // Step 2: Setup the HTTP Response
    var httpResponce = new HttpResponse(new StringWriter());

    // Step 3: Setup the Http Context
    var httpContext = new HttpContext(httpRequest, httpResponce);
    var sessionContainer = 
        new HttpSessionStateContainer("id", 
                                       new SessionStateItemCollection(),
                                       new HttpStaticObjectsCollection(), 
                                       10, 
                                       true,
                                       HttpCookieMode.AutoDetect,
                                       SessionStateMode.InProc, 
                                       false);
    httpContext.Items["AspSession"] = 
        typeof(HttpSessionState)
        .GetConstructor(
                            BindingFlags.NonPublic | BindingFlags.Instance,
                            null, 
                            CallingConventions.Standard,
                            new[] { typeof(HttpSessionStateContainer) },
                            null)
        .Invoke(new object[] { sessionContainer });

    // Step 4: Assign the Context
    HttpContext.Current = httpContext;
}

[TestMethod]
public void BasicTest_Push_Item_Into_Session()
{
    // Arrange
    var itemValue = "RandomItemValue";
    var itemKey = "RandomItemKey";

    // Act
    HttpContext.Current.Session.Add(itemKey, itemValue);

    // Assert
    Assert.AreEqual(HttpContext.Current.Session[itemKey], itemValue);
}

খুব সূক্ষ্ম এবং সহজ কাজ করে ... ধন্যবাদ!
এমজিজিএসফট

12

আপনি যদি এমভিসি ফ্রেমওয়ার্ক ব্যবহার করেন তবে এটি কাজ করা উচিত। আমি মিলক্সের ফেকহ্যাট্পকন্টেক্সট ব্যবহার করেছি এবং কোডের কয়েকটি অতিরিক্ত লাইন যুক্ত করেছি। এই পোস্ট থেকে ধারণাটি এসেছে:

http://codepaste.net/p269t8

এটি এমভিসি 5 তে কাজ করছে বলে মনে হচ্ছে আমি এমভিসির আগের সংস্করণগুলিতে এটি চেষ্টা করি নি।

HttpContext.Current = MockHttpContext.FakeHttpContext();

var wrapper = new HttpContextWrapper(HttpContext.Current);

MyController controller = new MyController();
controller.ControllerContext = new ControllerContext(wrapper, new RouteData(), controller);

string result = controller.MyMethod();

3
লিঙ্কটি নষ্ট হয়ে গেছে তাই পরবর্তী সময় কোডটি এখানে রাখুন।
ছড়া


8

এসপ নেট কোর / এমভিসি 6 আরসি 2 এ আপনি সেট করতে পারেন HttpContext

var SomeController controller = new SomeController();

controller.ControllerContext = new ControllerContext();
controller.ControllerContext.HttpContext = new DefaultHttpContext();
controller.HttpContext.Session = new DummySession();

আরসি 1 ছিল

var SomeController controller = new SomeController();

controller.ActionContext = new ActionContext();
controller.ActionContext.HttpContext = new DefaultHttpContext();
controller.HttpContext.Session = new DummySession();

https://stackoverflow.com/a/34022964/516748

ব্যবহার বিবেচনা করুন Moq

new Mock<ISession>();

7

আমার সাথে যে উত্তরটি কাজ করেছিল তা হ'ল অ্যান্টনি যা লিখেছিল তা কিন্তু আপনাকে অন্য একটি লাইন যুক্ত করতে হবে

    request.SetupGet(req => req.Headers).Returns(new NameValueCollection());

যাতে আপনি এটি ব্যবহার করতে পারেন:

HttpContextFactory.Current.Request.Headers.Add(key, value);

2

এটা চেষ্টা কর:

        // MockHttpSession Setup
        var session = new MockHttpSession();

        // MockHttpRequest Setup - mock AJAX request
        var httpRequest = new Mock<HttpRequestBase>();

        // Setup this part of the HTTP request for AJAX calls
        httpRequest.Setup(req => req["X-Requested-With"]).Returns("XMLHttpRequest");

        // MockHttpContextBase Setup - mock request, cache, and session
        var httpContext = new Mock<HttpContextBase>();
        httpContext.Setup(ctx => ctx.Request).Returns(httpRequest.Object);
        httpContext.Setup(ctx => ctx.Cache).Returns(HttpRuntime.Cache);
        httpContext.Setup(ctx => ctx.Session).Returns(session);

        // MockHttpContext for cache
        var contextRequest = new HttpRequest("", "http://localhost/", "");
        var contextResponse = new HttpResponse(new StringWriter());
        HttpContext.Current = new HttpContext(contextRequest, contextResponse);

        // MockControllerContext Setup
        var context = new Mock<ControllerContext>();
        context.Setup(ctx => ctx.HttpContext).Returns(httpContext.Object);

        //TODO: Create new controller here
        //      Set controller's ControllerContext to context.Object

এবং ক্লাস যুক্ত করুন:

public class MockHttpSession : HttpSessionStateBase
{
    Dictionary<string, object> _sessionDictionary = new Dictionary<string, object>();
    public override object this[string name]
    {
        get
        {
            return _sessionDictionary.ContainsKey(name) ? _sessionDictionary[name] : null;
        }
        set
        {
            _sessionDictionary[name] = value;
        }
    }

    public override void Abandon()
    {
        var keys = new List<string>();

        foreach (var kvp in _sessionDictionary)
        {
            keys.Add(kvp.Key);
        }

        foreach (var key in keys)
        {
            _sessionDictionary.Remove(key);
        }
    }

    public override void Clear()
    {
        var keys = new List<string>();

        foreach (var kvp in _sessionDictionary)
        {
            keys.Add(kvp.Key);
        }

        foreach(var key in keys)
        {
            _sessionDictionary.Remove(key);
        }
    }
}

এটি আপনাকে দুটি সেশন এবং ক্যাশে দিয়ে পরীক্ষা করার অনুমতি দেবে।


1

আমি উপরে উল্লিখিত বিকল্পগুলির চেয়ে কিছুটা কম আক্রমণাত্মক কিছু সন্ধান করছিলাম। শেষ পর্যন্ত আমি একটি উদ্দীপনা সমাধান নিয়ে এসেছি, তবে এটি কিছু লোকেরা আরও দ্রুত গতিতে চলে আসতে পারে।

প্রথমে আমি একটি টেস্টসেশন ক্লাস তৈরি করেছি :

class TestSession : ISession
{

    public TestSession()
    {
        Values = new Dictionary<string, byte[]>();
    }

    public string Id
    {
        get
        {
            return "session_id";
        }
    }

    public bool IsAvailable
    {
        get
        {
            return true;
        }
    }

    public IEnumerable<string> Keys
    {
        get { return Values.Keys; }
    }

    public Dictionary<string, byte[]> Values { get; set; }

    public void Clear()
    {
        Values.Clear();
    }

    public Task CommitAsync()
    {
        throw new NotImplementedException();
    }

    public Task LoadAsync()
    {
        throw new NotImplementedException();
    }

    public void Remove(string key)
    {
        Values.Remove(key);
    }

    public void Set(string key, byte[] value)
    {
        if (Values.ContainsKey(key))
        {
            Remove(key);
        }
        Values.Add(key, value);
    }

    public bool TryGetValue(string key, out byte[] value)
    {
        if (Values.ContainsKey(key))
        {
            value = Values[key];
            return true;
        }
        value = new byte[0];
        return false;
    }
}

তারপরে আমি আমার নিয়ামকের কনস্ট্রাক্টরে একটি anচ্ছিক প্যারামিটার যুক্ত করেছি। যদি প্যারামিটারটি উপস্থিত থাকে তবে এটি সেশনের কারসাজির জন্য ব্যবহার করুন। অন্যথায়, এইচটিটিপি কনটেক্সট.সেশনটি ব্যবহার করুন:

class MyController
{

    private readonly ISession _session;

    public MyController(ISession session = null)
    {
        _session = session;
    }


    public IActionResult Action1()
    {
        Session().SetString("Key", "Value");
        View();
    }

    public IActionResult Action2()
    {
        ViewBag.Key = Session().GetString("Key");
        View();
    }

    private ISession Session()
    {
        return _session ?? HttpContext.Session;
    }
}

এখন আমি আমার টেস্টসেশনটি কন্ট্রোলারে ইনজেকশন করতে পারি :

class MyControllerTest
{

    private readonly MyController _controller;

    public MyControllerTest()
    {
        var testSession = new TestSession();
        var _controller = new MyController(testSession);
    }
}

আমি আপনার সমাধানটি সত্যিই পছন্দ করি। KISS =>
এটিকে

1

কখনও বিদ্রূপ না .. কখনই না! সমাধান বেশ সহজ। নকল কেন এমন সুন্দর সৃষ্টি HttpContext?

অধিবেশন ধাক্কা! (কেবল আমাদের বেশিরভাগেরই বোঝার জন্য এই লাইনটি যথেষ্ট তবে নীচে বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে)

(string)HttpContext.Current.Session["CustomerId"];আমরা এখন এটি অ্যাক্সেস কিভাবে। এটিতে পরিবর্তন করুন

_customObject.SessionProperty("CustomerId")

যখন পরীক্ষা থেকে ডাকা হয়, _ কাস্টমঅবজেক্ট বিকল্প স্টোর (ডিবি বা ক্লাউড কী মান [ http://www.kvstore.io/] ) ব্যবহার করে

কিন্তু যখন আসল অ্যাপ্লিকেশন থেকে ডাকা হয় তখন _customObjectব্যবহার হয় Session

এটি কিভাবে হয়? ভাল ... নির্ভরতা ইনজেকশন!

সুতরাং পরীক্ষা অধিবেশন সেট করতে পারে (ভূগর্ভস্থ) এবং তারপরে অ্যাপ্লিকেশন পদ্ধতিতে কল করুন যেন এটি সেশন সম্পর্কে কিছুই জানে না। তারপরে অ্যাপ্লিকেশন কোডটি সঠিকভাবে সেশনটি আপডেট করেছে কিনা তা গোপনে পরীক্ষা করে। অথবা যদি পরীক্ষার দ্বারা নির্ধারিত সেশন মানের ভিত্তিতে অ্যাপ্লিকেশন আচরণ করে।

প্রকৃতপক্ষে, আমরা বলেছিলাম: "কখনও উপহাস করবেন না" তবুও আমরা উপহাস শেষ করেছি। বুকুয়েস আমরা সাহায্য করতে পারিনি কিন্তু পরবর্তী নিয়মে পিছলে গেলাম, "এটি যেখানে ব্যথিত হয় তাতে ব্যঙ্গ করুন!"। বিশাল উপহাস করা HttpContextবা একটি ক্ষুদ্রতর অধিবেশন উপহাস করা, যা সবচেয়ে কম ব্যথা করে? এই বিধিগুলি কোথা থেকে এসেছে আমাকে জিজ্ঞাসা করবেন না। আসুন আমরা সাধারণ জ্ঞান বলি। এখানে ইউনিট টেস্ট আমাদের মেরে ফেলতে পারে বলে মশকরা না করার বিষয়ে একটি আকর্ষণীয় পাঠ্য এখানে রয়েছে


0

@ রিট হিট যে উত্তর দিয়েছে তা আমাকে অনেক সাহায্য করেছিল, তবে আমি ব্যবহারকারীর শংসাপত্রগুলি হারিয়ে ফেলছি কারণ প্রমাণীকরণ ইউনিট পরীক্ষার জন্য আমাকে একজন ব্যবহারকারীকে নকল করতে হয়েছিল। সুতরাং, আমি কীভাবে এটি সমাধান করেছি তা বর্ণনা করি describe

এই অনুযায়ী , যদি আপনি পদ্ধতি যুক্ত করুন

    // using System.Security.Principal;
    GenericPrincipal FakeUser(string userName)
    {
        var fakeIdentity = new GenericIdentity(userName);
        var principal = new GenericPrincipal(fakeIdentity, null);
        return principal;
    }

এবং তারপরে সংযোজন

    HttpContext.Current.User = FakeUser("myDomain\\myUser");

আপনি যে TestSetupপদ্ধতিটি করেছেন তার শেষ লাইনে , ব্যবহারকারীর শংসাপত্রগুলি যুক্ত করা হয়েছে এবং প্রমাণীকরণ পরীক্ষার জন্য ব্যবহার করার জন্য প্রস্তুত।

আমি আরও লক্ষ্য করেছি যে HTTPContext এর অন্যান্য অংশগুলি আপনার প্রয়োজন হতে পারে যেমন .MapPath()পদ্ধতি method এখানে একটি ফেকহট্টপেক্সটেক্সট উপলভ্য রয়েছে যা এখানে বর্ণিত হয়েছে এবং নুগেটের মাধ্যমে ইনস্টল করা যেতে পারে।



0

এইভাবে চেষ্টা করুন ..

public static HttpContext getCurrentSession()
  {
        HttpContext.Current = new HttpContext(new HttpRequest("", ConfigurationManager.AppSettings["UnitTestSessionURL"], ""), new HttpResponse(new System.IO.StringWriter()));
        System.Web.SessionState.SessionStateUtility.AddHttpSessionStateToContext(
        HttpContext.Current, new HttpSessionStateContainer("", new SessionStateItemCollection(), new HttpStaticObjectsCollection(), 20000, true,
        HttpCookieMode.UseCookies, SessionStateMode.InProc, false));
        return HttpContext.Current;
  }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.