问题标签 [mvccontrib-testhelper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
306 浏览

visual-studio-2010 - 将 MVCContrib.TestHelpers 与 MsTest 一起使用 - 有没有办法获得更好的失败消息?

我刚开始使用 MVCContrib,我真的很喜欢它添加到各种测试场景中的语法糖。例如,我刚刚写了这个断言:

这个棒极了!嗯,几乎...

而不是,如我所愿,看到测试失败的实际原因(我在我的 MVC 应用程序中没有更改任何内容,因此应该路由HomeController.Index()到 这是我在调试时发现的,因为 MVCContrib 中的测试扩展方法正确(?)抛出了AssertionException.

我假设这是 NUnit 类型的失败异常,而 MsTest 版本是AssertFailedException. 由于 NUnit 版本(显然)没有从 MsTest 版本继承,因此 VS 中的测试运行器不会捕获异常并给我一个好消息。

有什么方法可以让 MsTest 以与 AssertFailedExceptions 类似的方式处理 AssertionExceptions,而不必重新编写 MVCContrib.TestHelpers 的一半?

我确实在本地工作副本中有源代码,所以我可以进去并在那里重新编写测试方法以抛出 MsTest 异常,但这似乎过于矫枉过正......

更新:
这个问题也出现在大多数模拟框架中,所以现在我不仅想用AssertionExceptionNUnit 做这个,还想用VerificationExceptionMoq 做这个,可能还有其他......这是不可能的吗?

0 投票
1 回答
728 浏览

unit-testing - 将 T4MVC 与 TestHelper 一起使用时如何测试渲染视图?

如果我得到的是 T4MVC_ActionResult,我如何测试哪个视图是从控制器操作呈现的?在正常情况下,我应该可以直接使用 TestHelper 的方法,例如示例

...但是,由于通过 T4MVC 我得到了 T4MVC_ActionResult 而不是 ViewResult,所以该部分AssertViewRendered<>().ForView("Details")失败了。如果我想测试调用了哪个视图,我有什么选择?


更新:

这是测试代码:

我用调试器result在行后设置断点,它的变量类型是T4MVC_ActionResult,而themeController是Evalgrid.Website.controllers.ThemeController. 请注意,我使用了控制器的完全限定名称。

我明白了:

预期结果为 ViewResult 类型。它实际上是 T4MVC_ActionResult 类型。

我不知道发生了什么事。

0 投票
2 回答
317 浏览

mvccontrib - 缺少文档:MVCContrib UI-Testing

是否有任何文档或示例如何使用 MvcContrib.TestHelper.Ui 和 WatinDriver?

0 投票
1 回答
340 浏览

c# - asp.net mvc 中的 mvcContrib 流畅路由测试问题

我在使用 MVCContrib Fluent 路由测试来测试路由时遇到问题。测试失败,但应用程序识别路由。

让我解释....

我的寄存器中有以下路线(按顺序显示)

路由管道正确地将请求发送到路由 1的Index和路由 2 的Show

但是,当我使用 MVCContrib 流利的类测试路由时,路由 1 的测试失败。

测试是:

测试失败,因为期望是Index但实际是Show

关于为什么流利的类没有识别正确的路由但 mvc 路由在实际应用程序中起作用的任何想法?或者没有关于如何调整我的测试或路线以允许我进行全面测试的任何建议?

0 投票
1 回答
397 浏览

asp.net-mvc-2 - MvcContrib TestHelper Fluent Route Testing 和特定 HttpVerbs 的问题

我正在尝试使用 MvcContrib TestHelper 流畅的路由测试 API,但我看到了奇怪的行为。.WithMethod(HttpVerb) 扩展方法似乎没有按预期执行。这是我的控制器显示 (2) 接受不同 HttpVerbs 的动作(同名):

这是应该映射到具有 [HttpPost] 属性的操作的测试:

即使在我的测试中指定了 POST HttpVerb,它总是路由到 HttpGet 方法。 我什至可以在我的控制器中注释掉接受 HttpPost 的动作并且仍然通过测试!

我在这里缺少什么吗?

0 投票
1 回答
243 浏览

asp.net-mvc - ASP.NET MVC 2:在视图和控制器中测试什么

我将 MVC 2 与 MVC contrib 和 Rhino 模拟一起使用。

我需要帮助。这是一个痛苦的周末。我一直在寻找关于如何使用 MVC contrib 对控制器进行测试的好文章。没有人对我有任何体面的答案。我想知道我需要在视图和控制器中测试什么?这是单元测试还是集成测试?

让我描述一下我的基本场景:我有一个索引视图,上面有一个网格。在这个网格中,我有一个新闻项目列表。在这个网格中,每一行的最后一列都有一个 Edit 链接,它将用户带到 EditNews 视图以编辑选定的新闻项目。此索引视图上还有一个添加新闻按钮,可将用户带到 CreateNews 视图。

现在考虑到当前的情况,我需要编写哪些测试?你们能否也请指出它们是单元测试还是集成测试。我需要为编辑链接编写测试吗?我需要为“添加新闻”按钮编写测试吗?我是否需要编写测试来检查此索引页面是否允许用户访问?这是我目前拥有的:

更新:这是我的索引操作方法:

任何体面的文章或示例代码将不胜感激。同样在 MVC contrib 上,代码示例也没多大用处。我想听到尽可能多的意见。

谢谢。

0 投票
1 回答
577 浏览

unit-testing - 使用 MvcContrib TestHelper 将会话设置为空

我的控制器中有一个操作可以验证我的 Session 是否已过期(== null),如果是,则重定向到我的登录名。我想为此添加一个单元测试,但我不能将 Session 设置为 null 或模拟它。任何人都知道我该怎么做以及测试它是否是个好主意?

这是我的控制器操作:

以及我所有尝试模拟 Session 的测试

但没有任何工作...

谢谢!

0 投票
3 回答
1648 浏览

c# - 使用 AssertViewRendered 时 MvcContrib TestHelper 给出一个奇怪的错误

我正在尝试使用 MvcContrib 测试助手来测试 MVC3 中的控制器方法。

控制器:

考试:

错误:

测试方法 Tests.Web.Controllers.HomeControllerTests.Index 抛出异常:MvcContrib.TestHelper.ActionResultAssertionException:预期结果为 ViewResult 类型。它实际上是 ViewResult 类型。

有任何想法吗?

0 投票
2 回答
3489 浏览

c#-4.0 - 尝试读取或写入受保护的内存

我有一个示例 ASP.NET MVC 3 Web 应用程序,它遵循 Jonathan McCracken 的 Test-Drive Asp.NET MVC(顺便说一句,很棒的书),我偶然发现了一个问题。请注意,我使用的是 MVCContrib、Rhino 和 NUnit。

上面的代码总是抛出这个错误:

System.AccessViolationException : 试图读取或写入受保护的内存。这通常表明其他内存已损坏。

控制器动作代码如下:

据我所知,由于控制器操作中的两个分配,该应用程序似乎崩溃了。但是,我看不出哪里有问题!?

谁能帮我找出解决这个问题的方法。

谢谢你。

编辑 1

我做了一些实验来看看问题是什么。删除ViewData,Model作业时,问题超越Expected result to be of type ViewResult. It is actually of type ViewResult.. 分配是如此基本,ViewData以至于我认为这不是问题,所以我认为 Rhino 或 MVCcontrib 与 MVC 3 结合使用有问题。

我还为相同的控制器操作编写了以下测试:

现在这个失败了,System.NullReferenceException : Object reference not set to an instance of an object可能是因为没有为这个特定的测试设置 HttpContext。删除ViewBag作业时,一切正常。

希望这能让问题更清楚。

编辑 2

在删除ViewData.Model赋值后调试代码时,它会抛出一个不同的错误:System.NullReferenceException : Object reference not set to an instance of an object.ViewBag赋值上。

0 投票
2 回答
924 浏览

asp.net-mvc - 具有 PerWebRequest LifeStyle 依赖项的单元测试控制器

我正在尝试为依赖于生活方式为“PerWebRequest”的类型的控制器编写单元测试。

Castle 抛出以下异常:

System.InvalidOperationException:HttpContext.Current 为空。PerWebRequestLifestyle 只能在 ASP.Net 中使用。

我可以以某种方式模拟 HttpContext.Current 属性来解决这个问题吗?

我试图使用 MVCContrib 的 TestControllerBuilder 来初始化这个控制器,但它没有效果。