【发布时间】:2010-11-27 03:11:36
【问题描述】:
我一直在尝试为 MonoRail 编写一些初始的 NUnit 单元测试,并且已经掌握了一些基础知识。但是,虽然我设法检查了控制器操作是否设置了 Flash["message"] 值,但 BaseControllerTest 类似乎根本没有存储视图的输出,所以无论我调用 RenderView 还是动作本身,没有任何内容被添加到 Response.OutputContent 数据中。 我还尝试调用 InPlaceRenderView 来尝试让它写入 StringWriter,而 StringWriter 似乎也没有得到任何回报——返回的 StringBuilder 也是空的。 我正在创建一个新的控制器实例,然后调用 PrepareController(controller,"","home","index");
到目前为止,BaseControllerTest 似乎导致任何输出都被放弃。我错过了什么吗?这应该工作吗?我不确定 100%,因为虽然我也在 Linux 上的 MonoDevelop 中运行这些单元测试,但 MonoRails 在那里工作正常。
【问题讨论】:
-
您没有在测试上下文中设置视图引擎。根据您实际使用的 ViewEngine,您需要对其进行初始化并将其添加到测试上下文中。无论如何,我会重新考虑运行一直到视图的集成测试。这类测试往往非常脆弱,投资回报率低至负。确保将所有逻辑留在视图之外。
-
我试图将逻辑排除在视图之外,并创建了一个我也想测试的 ViewComponent。我不希望对所有视图进行单元测试,但我想组合一个示例测试来演示如果我在正确获取特定页面时遇到问题,它是如何完成的。
-
我暂时不尝试对视图进行单元测试 - 我有一种能够使用 Selenium 测试页面的解决方案,尽管只能通过 MonoDevelop 和 Selenium RC 的浏览器t 似乎也打得很好。我仍然需要有一种不同的方式来测试 ViewComponent - 从我读过的内容来看,这应该能够进行单元测试,但我仍然缺少任何示例代码来展示如何设置属性它等等
标签: unit-testing castle-monorail