【问题标题】:MVC, Nhibernate, castle, windsor Integrated testing not writing to databaseMVC、Nhibernate、castle、windsor 集成测试不写入数据库
【发布时间】:2013-02-05 22:31:27
【问题描述】:

我们正在尝试为使用 MVC、Nhibernate、castle、windsor 和 sharpArch 的 Web 应用程序编写一些集成测试。当我们逐步完成测试时,它们正确地命中了所有方法,但没有将任何数据写入数据库。我们使用的是存储库模型,并且 Nhibernate 保存。该代码在从网站运行时有效。我们没有在集成测试中使用 DI,这是 Web 应用程序解决方案中的一个项目。没有抛出任何错误。 Nhibernate 在全局的集成测试中被初始化为

NHibernateSession.Init(WebSessionStorage,
                               new string[] { binPath },
                               null,
                               appconfigPath,
                               configuration, null, null);

其中 binPath 是包含 Nhibernate 映射和类的 dll 的路径,而 appconfigPath 是网站 bin 的路径。 NHibernateSession 似乎已被填充。

欢迎提出任何想法和建议。

thnx

【问题讨论】:

    标签: asp.net-mvc-3 nhibernate castle-windsor integration-testing


    【解决方案1】:

    验证您在测试中没有忘记事务处理(并提交它们(从而触发刷新))。

    【讨论】:

    • 感谢您的回复。由于我正在使用的语句使用 Nhiberante SEssion 保存,并且该函数本身有效,因此我假设保存是自动刷新的。我应该提到并编辑了这个问题,包括这是一个 MVC 项目。
    • ISession.Save() 并不意味着“立即运行 SQL INSERT”。它的意思是“将此对象标记为持久”。如果数据库负责生成标识符,则 INSERT 语句将作为副作用运行。如果 NHibernate 或应用程序负责标识符,则 INSERT 在执行刷新之前不会运行。由于这通常发生在事务提交上,因此生产和测试之间事务处理的任何差异都可能引起问题的关注。
    • 我错了。我必须在测试中获得 Nhibernate Session,然后在调用该函数之前执行一个开始事务并在之后执行一个提交。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多