Bir birim testi yazıyorum ve HttpContext/ControllerContext boş olduğundan denetleyici yöntemi bir istisna atar. HttpContext'ten bir şey almam gerekmiyor, sadece NULL olmamasına gerek yok. Araştırma yaptım ve Moq'un cevabı olduğuna inanıyorum. Fakat gördüğüm tüm örnekler bana çok yardımcı olmadı. Httpcontext ile dalga geçmek için süslü bir şey yapmam gerekmiyor. Bana doğru yönde gelin!httpcontext ile alay etme, ünite testinden null olmaması nasıl olur?
cevap
Bu iki işlevi bir sınıfta here'dan aldınız;
public static class HttpContextFactory
{
public static void SetFakeAuthenticatedControllerContext(this Controller controller)
{
var httpContext = FakeAuthenticatedHttpContext();
ControllerContext context =
new ControllerContext(
new RequestContext(httpContext,
new RouteData()), controller);
controller.ControllerContext = context;
}
private static HttpContextBase FakeAuthenticatedHttpContext()
{
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>();
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("a.ali174");
return context.Object;
}
}
Birim testinden, onları böyle aradım;
HttpContextFactory.SetFakeAuthenticatedControllerContext(controller);
Eğer testler projede Moq yüklü olduğundan emin olun:
Install-Package Moq
Ben ancak birim testler için MVC uygulama alaycı, bu eski bir konu olduğunu biliyoruz biz çok düzenli olarak yapmak bir şeydir.
Sadece deneyimlerimi eklemek istedim Visual Studio 2013'e yükselttikten sonra Moq 4'ü kullanarak MVC 3 uygulamasının yüklenmesi. Birim testlerinin hiçbiri hata ayıklama modunda çalışmıyordu ve HttpContext, çalışırken "ifade değerlendirilemedi" mesajı veriyordu. değişkenlere göz atmak.
Görsel stüdyo çıkıyor, bazı nesneleri değerlendiren sorunlar var. Hatalı bir şekilde çalışan web uygulamalarının hata ayıklanmasını sağlamak için, Araçlar => Seçenekler => Hata Ayıklama => Genel ayarlarında "Yönetilen Uyumluluk Modunu Kullan" seçeneğini işaretlemem gerekiyordu.
- 1. HttpContext, WCF hizmetinde null?
- 2. Yii2 Mockery ile ActiveRecord ile alay etme
- 3. Bir birim testinde HTTPResponse alay Etme
- 4. Bir FileStream Kullanarak Alay Etme
- 5. Clojure veritabanı birimi test etme/alay etme
- 6. Mockito alay nesneleri döndürür null
- 7. WCF Web Hizmetlerini Rhino Mocks ile alay etme
- 8. rspec ve mocha birlikte alay etme
- 9. Jest - bir işlev çağrısıyla alay etme
- 10. Ünite
- 11. Özel bir iç sınıfla alay etme
- 12. Bileşeninde alay etme hizmeti - alamet görmezden gelin
- 13. Java'da SOAP web servisleriyle alay etme
- 14. calloc başarısız olur ve NULL
- 15. Ünite
- 16. Moq ile alay listesi dönen nesne alay
- 17. Nasıl Microsoft.Office.Interop.Excel.Range Moq ile alay?
- 18. HttpContext Web sitesinden HttpHandlers Kayıtlı Olun HttpContext
- 19. Sayfamı yenilediğimde Firebase authData null olur
- 20. Ünite testleri ile yeniden tedarik sorunu
- 21. Birim testinde httpcontext kullanma
- 22. Nasıl "Host:" başlığı HttpContext (asp.net)
- 23. Yeni bir HttpContext nasıl oluşturabilirim?
- 24. TempData, sayfayı yeniledikten sonra null olur
- 25. Rails Entegrasyon Testinden oturuma nasıl erişilir?
- 26. Asenkron bir iletki testinden nasıl dönebilirim?
- 27. rspec-alay 'alma hevesli bir şekilde başarısız olur
- 28. HttpContext için en iyi uygulamalar ve test edilebilir kontrolörleri
- 29. Hata çalışan ünite testleri ile karma
- 30. Python'da bir BulkWriteException ile nasıl alay edilir?
Bu yazının size yardımcı olacağını düşünüyorum. http://stackoverflow.com/questions/542132/mocking-a-httpcontext-response-output-with-moq –
Anladım! Bu gönderi çok yardımcı oldu: http://www.emadibrahim.com/2008/04/04/unit-test-linq-to-sql-in-aspnet-mvc-with-moq/ Bir HttpContextFactory Sınıfı ile birlikte yapıldı iki yöntem. Bir alaycı httpcontext ve diğer ayarlanan denetleyici bağlamı alaylanmış verilere. – TheFlyingCircus
Sorunuza bir çözüm olarak, çözümünüzü burada özetleyen bir örnek kod koymalısınız. Yapabildiğiniz zaman kabul ettiğinizden emin olun. –