问题标签 [mspec]
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.
visual-studio-2010 - 使用 ReSharper 5.x 和 VS2010 运行文件中的所有测试
有没有办法告诉 R# (5.x) 测试运行程序运行当前文件中的所有 MSpec 规范?
像Visual Studio 测试运行器的 ++Ctrl快捷方式之类的东西是我所追求的,无论是快捷方式还是上下文菜单命令。RCtrlT
unit-testing - 如何在 MSpec 中输出带有 It 断言的消息
在之前使用过 MbUnit 之后,我们正在使用MSpec进行单元测试。
我习惯了能够说
在 MbUnit 中,即在断言中添加一条消息,如果它失败则输出。
我在 MSpec 中找不到任何相应的功能。我正在测试一些 XML 验证,如果失败,我想报告验证错误消息。所以我的 MSpec 代码看起来像
但是如果失败,我希望能够将其添加message
到测试输出中。ShouldBeTrue()
这可能吗?
asp.net-mvc - Moq 的意外验证行为
起订量让我对我的最新项目有点抓狂。我最近升级到版本 4.0.10827,我注意到在我看来这是一种新行为。
基本上,当我在我正在测试的代码中调用我的模拟函数(MakeCall
在这个例子中)时,我传入了一个对象(TestClass
)。我正在测试的代码TestClass
在调用MakeCall
. 代码完成后,我将调用 Moq 的Verify
函数。我的期望是 Moq 将记录我传入的完整对象MakeCall
,也许是通过像深度克隆这样的机制。这样,我将能够验证MakeCall
使用我期望调用它的确切对象调用它。不幸的是,这不是我所看到的。
我试图在下面的代码中说明这一点(希望在这个过程中稍微澄清一下)。
- 我首先创建一个新
TestClass
对象。其Var
属性设置为"one"
。 - 然后我创建模拟对象
mockedObject
,这是我的测试对象。 - 然后我调用的
MakeCall
方法mockedObject
(顺便说一下,示例中使用的 Machine.Specifications 框架允许When_Testing
从上到下读取类中的代码)。 - 然后我测试模拟对象以确保它确实是
TestClass
用Var
值为 的 a 调用的"one"
。正如我所料,这成功了。 - 然后,我通过将属性
TestClass
重新分配给.Var
"two"
- 然后,我继续尝试验证 Moq 是否仍然认为使用值为 的 a
MakeCall
调用。这失败了,尽管我希望它是真的。TestClass
"one"
- 最后,我测试一下 Moq 是否认为
MakeCall
实际上是由TestClass
一个值为"two"
. 这成功了,尽管我最初预计它会失败。
对我来说似乎很清楚 Moq 仅保留对原始TestClass
对象的引用,允许我随意更改其值,从而对我的测试结果产生不利影响。
关于测试代码的一些注释。 IMyMockedInterface
是我正在嘲笑的界面。 TestClass
是我传递给MakeCall
方法的类,因此用来演示我遇到的问题。最后,When_Testing
是包含测试代码的实际测试类。它使用的是Machine.Specifications框架,这就是为什么会有一些奇怪的项目('因为','它应该......')。这些只是由框架调用以执行测试的委托。如果需要,它们应该很容易被删除,并将包含的代码放入标准函数中。我以这种格式保留它,因为它允许所有Validate
调用完成(与“安排,行动断言”范式相比)。只是为了澄清,下面的代码不是我遇到问题的实际代码。它只是为了说明问题,因为我在多个地方都看到了同样的行为。
我对此有几个问题:
这是预期的行为吗?
这是新行为吗?
有没有我不知道的解决方法?
我是否错误地使用了验证?
有没有更好的方法来使用 Moq 来避免这种情况?
我谦虚地感谢您提供的任何帮助。
编辑:
这是我遇到此问题的实际测试和 SUT 代码之一。希望它能起到澄清作用。
teamcity - 使用 TeamCity 构建 MSpec 测试
我正在尝试设置 TeamCity。最初,我遇到了各种问题,但经过多次试验和错误,我成功地执行了构建。所以我知道我可以得到我的解决方案的精简版本来成功构建。
但是,有问题的项目之一是我的 MSpec 测试。当我配置我的解决方案来构建 MSpec 测试项目时,我得到以下错误:
Areas\Manufacturing\Controllers\DashboardControllerSpecs.cs(7, 30):错误 CS0234:命名空间“CompanyName.ApplicationName”中不存在类型或命名空间名称“Hosts”(您是否缺少程序集引用?)
事实是它在我的本地机器上构建“很好”,但在构建服务器上,恰好在我的本地机器上,我得到了上面的错误。
我可能做错了什么?我应该检查哪些事情以找出我做错了什么?
teamcity - 由于 TeamCity 构建测试程序集错误,无法运行 MSpec 测试
我正在尝试在构建解决方案之后运行 MSpec 测试。所以,我的 MSBuild 脚本设置如下:
然后我将“TeamCity”称为我在 TeamCity 中的目标。当命令
“mspec.exe ..\Hosts\MyApplication.Hosts.Web.Specs\bin\MyApplication.Hosts.Web.Specs.dll --teamcity”
执行时,我收到以下错误:
C:\TeamCity\buildAgent\work\117e3aa3bb76aad0\Build>mspec ..\Hosts\Application.Hosts.Web.Specs\bin\Application.Hosts.Web.Specs.dll 无法加载文件或程序集 'file:// /C:\TeamCity\buildAgent\work\117e3aa3bb7 6aad0\Hosts\Application.Hosts.Web.Specs\bin\Application.Hosts.Web.Specs.dll' 或其依赖项。试图加载格式不正确的程序。
经过一番调查,我发现本地机器和构建服务器上的“MyApplication.Hosts.Web.Specs.dll”虽然都是 15kb,但具有不同的 md5 校验和。这或许可以解释为什么执行 MSpec 测试会导致错误。事实上,如果我将 dll 从本地机器复制到构建服务器,测试就会运行。
所以我的问题是,其他人是否遇到过同样的问题,即“糟糕”地构建程序集?
-编辑- 在本地,我将解决方案构建为 64 位应用程序,但在 TeamCity 中,我将其构建为 32 位 (x86)。这可能是问题吗?
PS:我尝试在 TeamCity 中将其构建为 64 位应用程序,但我遇到了其他我宁愿暂时忽略的错误。但是,为了完整起见,这里是:
nant - 为什么 NCover 会忽略我的程序集?
我正在使用 NAnt 通过 TeamCity 运行我的构建。构建运行没有任何问题。它还向我显示所有测试都已通过。NCover 创建了覆盖 xml 文件。有很多关于 mspec 用于在其中运行测试的组件的信息,但没有关于我的代码的任何信息。生成 Html 报告时,我的模块完全丢失了。对我来说,这真的很奇怪。有谁能帮助我吗?
NAnt 目标:
unit-testing - mspec & rhino mocks expected exception testing
I'm fairly new to unit testing and can't get around how to test (or if I even should) this case properly.
I have a controller method (pseudo code):
I have a bunch of separate tests against "_userService". The "CreateUser" method just creates a new user and returns nothing OR throws an exception if there was an error (ex. the user exists) that I bubble up to the controller surround in a try catch and add the exception to the ModelState.
From what I understand I should mock the service and assert that it was called correctly (i use the assertwascalled syntax) since it returns nothing and I just want to know that my controller calls it.
What I'm not sure is how to test that when the userservice throws an error it should not redirect and should add that exception to the modelstate. With rhino mocks you can stub a mock but the book art of unit testing advises against that.
Right now in my test I manually add a model error (not caring if it's from user service) and test that the controller returns the same view if there are errors. Is this the correct way of going about this? Or should I maybe create a separate test where I stub the _userService to throw an error and check it gets added to modelstate? Or should I not even test that case? I feel like I may be just over analyzing the whole thing and testing using the modelstate would be enough to satisfy this...
asp.net-mvc-3 - 为 Asp.net mvc 3 控制器编写测试时 MSpec 和基类测试失败
我目前正在为这个已经实现的控制器编写一些 MSpec 规范(是的,我知道这样做是“错误的”)。
这是一个“简单”的问题,但我不确定我做错了什么,希望有人能够指出我的方式错误。
我的Controller的方法如下:
我遇到的问题是
该方法在定义当前控制器 (CompanyHomeController) 的基类 (BaseController) 中定义。
我的规格如下:
当我运行测试时,它失败了,我收到了这条消息:
我觉得它开花很明显,但我看不太清楚。由于 CompanyHomeController 是 SUT,我不太明白为什么我必须触及 BaseController。我应该把后者剔除吗?如果是这样,为什么?
asp.net-mvc-3 - 如何使用 fakeiteasy 为包含对 HttpContext 的调用的代码编写 MSpec 测试?
我正在扭转众所周知的短裤。对于这个非常简单的代码:
如何使用 fakeiteasy 编写 MSpec 测试来验证是否返回了视图,并且更准确地验证页面标题是否设置正确?
TIA,
大卫
bdd - 关于功能测试、BDD 和 TDD 的困惑
我有一个必须填写几个字段的表格。但是,只有一个字段是强制性的。所以,我想出了以下规范:
现在我想实现它,但我很困惑,因为它听起来很像功能测试,我必须使用类似 mvccontrib.watin dll 的东西。我对它确实是功能测试吗?我是否为 BDD 制定了“错误”的规范?