Tôi gặp sự cố khi trả về giá trị Phiên được đặt từ chế độ nhạo báng bằng cách sử dụng Moq. Sử dụng sauMoq Mocking và theo dõi Giá trị phiên
public class TestHelpers
{
public long sessionValue = -1;
public HttpContextBase FakeHttpContext()
{
var httpContext = new Mock<HttpContextBase>();
var session = new Mock<HttpSessionStateBase>();
httpContext.Setup(x => x.Session).Returns(session.Object);
httpContext.SetupGet(x => x.Session["id"]).Returns(sessionValue);
httpContext.SetupSet(x => x.Session["id"] = It.IsAny<long>())
.Callback((string name, object val) =>
{
sessionValue = (long)val;
});
}
}
Khi tôi cố gắng để có được những giá trị bên ngoài sử dụng
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
làm một số nội dung mà bộ Session [ "id"]
var sessionid = httpContext.Session["id"];
sessionid hóa ra là -1. Nhưng tôi có thể nhận được giá trị phiên đã đặt bằng cách sử dụng
th.sessionValue
Có vấn đề gì? Tôi không thể trả lại giá trị đã đặt thông qua Moq?
Điều này không hiệu quả đối với tôi: @Konamimam có vẻ đúng là .Callback không bị sa thải. Cách tiếp cận chính xác dường như ở đây: http://stackoverflow.com/a/2921695/213609 –