मैं सिर्फ रावेनडीबी के साथ शुरुआत कर रहा हूं और मुझे अब तक यह पसंद है। हालांकि मैं इस बात पर अटक गया हूं कि मुझे यूनिट टेस्ट कंट्रोलर क्रियाओं को कैसे करना चाहिए जो इसके साथ बातचीत करते हैं।एएसपी.नेट एमवीसी, रावेनडीबी और यूनिट परीक्षण
मुझे इस तरह के सभी प्रश्न/लेख मिल गए हैं: Unit testing RavenDb queries मुझे बताएं कि मुझे इसे याद करने के बजाय स्मृति में RavenDB का उपयोग करना चाहिए, लेकिन मुझे यह कैसे किया जाता है इसका एक ठोस उदाहरण नहीं मिल रहा है।
उदाहरण के लिए मैं डेटाबेस के लिए एक कर्मचारी को जोड़ने के लिए एक नियंत्रक कार्रवाई की है (हाँ, यह बहुत ज्यादा सरल है, लेकिन मैं इस मुद्दे को जटिल नहीं करना चाहती)
public class EmployeesController : Controller
{
IDocumentStore _documentStore;
private IDocumentSession _session;
public EmployeesController(IDocumentStore documentStore)
{
this._documentStore = documentStore;
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
_session = _documentStore.OpenSession("StaffDirectory");
}
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (_session != null && filterContext.Exception == null) {
_session.SaveChanges();
_session.Dispose();
}
}
[HttpGet]
public ViewResult Create()
{
return View();
}
[HttpPost]
public RedirectToRouteResult Create(Employee emp)
{
ValidateModel(emp);
_session.Store(emp);
return RedirectToAction("Index");
}
इस बात की पुष्टि कर सकते हैं कैसे क्या के लिए जोड़ा गया एक इकाई परीक्षण में डेटाबेस? क्या किसी के पास एमवीसी अनुप्रयोगों में रावेनडीबी से जुड़े यूनिट परीक्षणों के कोई उदाहरण हैं?
यदि मैं मायने रखता हूं तो मैं एमएसटीएस्ट का उपयोग कर रहा हूं लेकिन मुझे अन्य ढांचे से परीक्षणों का प्रयास करने और अनुवाद करने में खुशी है।
धन्यवाद।
संपादित
ठीक है, अपने परीक्षण आरंभ दस्तावेज़ की दुकान है कि नियंत्रक निर्माता में इंजेक्ट किया जाता बनाता है, लेकिन जब मैं अपने परीक्षण चलाने OnActionExecuting घटना नहीं चलता है तो वहाँ का उपयोग करने के लिए कोई सत्र है और परीक्षण में विफल रहता है एक शून्य संदर्भ अपवाद के साथ।
[TestClass]
public class EmployeesControllerTests
{
IDocumentStore _store;
[TestInitialize]
public void InitialiseTest()
{
_store = new EmbeddableDocumentStore
{
RunInMemory = true
};
_store.Initialize();
}
[TestMethod]
public void CreateInsertsANewEmployeeIntoTheDocumentStore()
{
Employee newEmp = new Employee() { FirstName = "Test", Surname = "User" };
var target = new EmployeesController(_store);
ControllerUtilities.SetUpControllerContext(target, "testUser", "Test User", null);
RedirectToRouteResult actual = target.Create(newEmp);
Assert.AreEqual("Index", actual.RouteName);
// verify employee was successfully added to the database.
}
}
मुझे क्या याद आ रही है? परीक्षण में उपयोग करने के लिए बनाए गए सत्र को मैं कैसे प्राप्त करूं?
मैं अपने प्रश्न को नवीनीकृत किया है, यही कारण है कि –