问题标签 [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.

0 投票
1 回答
1117 浏览

visual-studio-2010 - MSpec & Resharper 测试运行器问题

我将 MSpec 和 Visual Studio 2010 与 Resharper 5.1 一起使用。我已将 MSpec 测试运行器插件安装到 resharper 中,但它无法正常工作。这是我的测试:

但是测试运行器没有运行我的断言但仍然显示成功,我得到的输出是:

替代文字

0 投票
2 回答
271 浏览

unit-testing - 如何使用 TDD / BDD 开发输入对象?

我有一个方法叫做ProcessPayment()我正在通过 BDD 和 mspec 开发。我需要帮助来应对新的挑战。我的用户故事说:

为了设置上下文,我使用 Moq 对网关服务进行存根。

这是规格:

该方法应采用“PaymentProcessingRequest”对象(不是域 obj),将该 obj 映射到域 obj,并将域 obj 传递给网关服务上的存根方法。网关服务的响应是该方法返回的内容。但是,由于我对网关服务方法进行存根的方式,它并不关心传递给它的内容。结果,似乎我无法测试该方法是否将请求对象正确映射到域对象。

我什么时候可以在这里做并且仍然坚持 BDD?

0 投票
1 回答
132 浏览

c# - 使用 Behaves_like在基类上

我想在基本规范上指定一个 Behaves_like 以确保将特定方法标记为虚拟。像这样的东西:

然而,测试运行者并没有选择这个。我认为在命令处理程序的每个规范上指定 ehaves_like 将是一个主要的 PITA。这可能吗?如果不是,这是一种理想的行为吗?

更新:抱歉回复晚了,这是失败的规范:

0 投票
1 回答
1255 浏览

resharper - MSpec 和 ReSharper 问题

我从 codebetter teamcity 站点获得了最新的 mspec,并按照建议安装了 Resharper5.1 运行器。跑步者和注释在 resharper 选项对话框中显示得很好。

现在,即使勾选了注释库,我仍然到处都收到“从未使用字段 xxx”的警告,当我要求 resharper 在解决方案中运行所有测试时,它似乎找不到我的规范。

我已经解锁了dll。

使用 resharper 5.1。

0 投票
1 回答
844 浏览

.net - 无法使用 Syste.Data.SQLite.dll x86 运行 mspec.exe,但它适用于 R# MSpec runner

我使用 mspec 进行测试,并在测试中为我的数据库使用 SQLite x86 的 NHiernate 设置。问题是,当我使用 mspec r# runner 运行我的测试时,一切正常,但是从控制台运行它会出现一个错误,即它找不到 sqlite dll。

我的规范项目配置:

.net 4

x86(使用 x86 版本的 sqlite)

System.Data.SQLite,版本=1.0.64.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139 mspec,版本=0.3.0.0,Culture=neutral,PublicKeyToken=null,目标运行时:v4.0.30319,目标:x86

MSpec 是从源代码构建的。在 Reflector 中,mspec.exe 显示为为 x86 构建的 - 这似乎适合我的设置,并且如上所述使用 r# runner 测试运行良好。

NHibernate.HibernateException:无法从 NHibernate.Driver.SQLite20Driver、NHibernate、版本=2.1.2.4000、Culture=neutral、PublicKeyToken=aa95f207798dfdb4 创建驱动程序。---> System.Reflection.TargetInvocationException:调用的目标已抛出异常。---> NHibernate.HibernateException:找不到程序集 System.Data.SQLite 中的 IDbCommand 和 IDbConnection 实现。确保程序集 System.Data.SQLite 位于应用程序目录或全局程序集缓存中。如果程序集在 GAC 中,请使用应用程序配置文件中的元素来指定程序集的全名。在 NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName, String connectionTypeName, String commandTypeName) 在 NHibernate.Driver.SQLite20Driver..ctor()

有谁知道如何解决这个问题?

提前感谢多云维也纳的问候,

克里斯

0 投票
1 回答
443 浏览

visual-studio-2010 - Visual Studio 2010 中的 MSpec 仍然无法正常工作

之前有人问过类似的问题,当我在 Visual Studio 2010 中运行 MSpec 时出现以下错误:

无法加载文件或程序集“Machine.Specifications.dll”或其依赖项之一。该系统找不到指定的文件。

另一篇文章中的解决方案是下载 .net4 特定版本的 MSpec。但是,这就是我正在使用的,它仍然无法正常工作。我什至今天重新下载了最新版本,并使用 build-4.0-release.cmd 文件构建了它。替换了我的参考,仍然有同样的问题。

奇怪的是,我第一次运行 MSpec 时,它工作得很好。只有当我尝试重新运行它时,我才会收到此错误。

测试在 ReSharper 测试运行器中仍然运行良好。所以,还是可以用的。但是,ReSharper 测试运行程序不会生成 Report.html 文件。这真的是我想让它工作的唯一原因。有没有办法让 ReSharper 生成 Report.html 文件?那也能解决问题。

0 投票
2 回答
1310 浏览

c# - 用 MSpec 比较两个列表

我应该使用哪种方法来断言两个列表包含具有 MSpec 的相同对象?

0 投票
3 回答
555 浏览

resharper - 更改 resharper 设置以适应 mspec 编码

当我创建如下新测试时:

它应该_get_something = () => foo();

当我在代表前面打分号重磨器时:

Private It should_get_something = () => foo();

然后我必须删除它。

我可以告诉 resharper 不要这样做吗?我尝试在命名样式对话框中添加一条规则,选择 Machine.Specifications.It 并取消选中 Private 但这没有效果。

0 投票
2 回答
3763 浏览

c# - 如何使用 RhinoMocks 断言具有三种不同类型的泛型方法?

我正在尝试学习 Rhino Mocks AAA 语法,但在断言某个方法(带有任何参数值)被调用时遇到了麻烦。我使用 Machine.Specifications 作为我的测试框架。

这个特定的方法是通用的,我想确保它被三种不同的类型调用了三次。

我为每种类型的函数存根。但我得到了一个有趣的结果。(以下)

结果是两个例外和一个通过。

第一个调用抛出:

System.InvalidOperationException:没有设置要验证的期望,确保操作中的方法调用是虚拟(C#)/可覆盖(VB.Net)方法调用

第二个抛出:

System.InvalidOperationException:录制时仅在模拟方法调用中使用 Arg。预期 1 个参数,已定义 2 个。

第三个通过了……出于某种奇怪的原因。

我还尝试在我的设置中将 GenerateMock() 与 Expect 结合使用,以及将 GenerateStub() 与 Stub 结合使用。两者都得到了完全相同的结果。我一定是做错了什么。

我正在使用:MachineSpec 0.3.0.0 和 RhinoMocks 3.6.0.0

有任何想法吗?

- - -固定的 - - - - -

这是在 Lee 的帮助下的完整(工作版本)。我正在使用一个额外的(非 linq)层。我的实际问题是我的一项测试在离线真实代码中重新使用了错误的 lambda 变量。它应该做某事 = () => repo.AssertWasCalled( o => repo .Save(data)); //错误的lambda

所以这里有一个正确测试的样本供参考。

0 投票
1 回答
351 浏览

c# - LambdaExpression 比较

我正在使用机器规格进行测试,有些事情我无法做到,想知道是否有人以前去过那里,

有什么方法可以使用 Rhino Mocks 为使用 lambda 表达式的方法创建存根,我发现我可以执行以下操作

在示例类中使用此方法:

我可以像这样存根方法:

问题是我想把方法存根不是Any Lambda Expression,只是针对特定的 lambda 表达式 "x=>x.Id==userId && user.IsActive ==true",这样如果这个表达式在方法中发生变化,测试就会失败......

我想我可以创建一个不进入数据库的模拟存储库并测试 lambda 中的行为,但我想知道是否还有另一种方法......

感谢对此的任何建议,谢谢