问题标签 [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 投票
3 回答
868 浏览

mspec - 在这种情况下,您将如何使用 MSpec 避免上下文/类爆炸?

我喜欢 mspec。它非常适合以易于与非技术人员交流的方式提供关键示例,但有时我发现它提供了不必要的冗长,特别是类的爆炸式增长。

举个例子。

我想模拟国际象棋中骑士棋子的运动。假设马不在任何其他棋子或棋盘边界附近,马有 8 种可能的移动方式,我想涵盖每一种可能性,但坦率地说,我懒得写 8 个单独的规范(8 个类)。我知道我可以很聪明地处理行为和继承,但是因为我想涵盖 8 个有效动作,所以我看不出没有 8because秒我怎么能做到,因此有 8 个单独的类。

用 mspec 覆盖这些场景的最佳方法是什么?

一些代码。

我可能要做的是。

但不是8次。

0 投票
2 回答
3972 浏览

bdd - MSpec 和 SpecFlow 什么时候使用?两者的优点/缺点是什么?

我正在尝试开始使用 BDD,并找到了有关 MSpec 和 SpecFlow 的查看博客文章。我目前不太确定我什么时候会使用哪个框架以及这两个框架的优点/缺点是什么。

查看文档,似乎 MSpec 使用上下文规范样式,而 SpecFlow 使用 Given/When/Then 样式。我也不介意,但我想知道当项目/测试套件增长时是否有任何陷阱需要注意。

基本上,在日常工作中使用它的人的一些现实世界的建议/反馈会很棒。

0 投票
1 回答
2140 浏览

.net - 如何在 MSpec 中为每个测试运行设置和拆卸代码?

我有用于设置和拆除 NHibernate 的通用代码,我几乎所有的测试都需要它。有没有办法将“需要所有测试”代码包含在一个地方,然后将其应用于所有测试?(即像 Nunit 的setupteardown方法)

0 投票
1 回答
238 浏览

c# - Rhino Mocks:断言中使用的存根值?

首先是我的问题,然后是一些细节:

问:在确保在后续赋值中使用属性值时,我是否需要对属性的值进行存根?

详细信息:
我在 MSpec 类中使用 Rhino Mocks 3.5 的 AAA 语法。我已经修剪了下面的代码以使其(希望)易于理解。

*不存根 _fooResultMock 的属性值:*

*存根 _fooResultMock 的属性值:*

对我的测试来说重要的是在 _fooResultMock 的Name属性中找到的值被分配给 _fooTargetMock 的属性。

那么,第一个代码块是否充分测试了这一点,或者第二个代码块(存根 _fooResultMockName属性的值)是否必要?

出于任何原因,第二个区块是否不可取?

0 投票
1 回答
1037 浏览

tdd - 是否可以使用 MSpec 创建数据驱动测试?

使用 MSpec 是否可以创建数据驱动的测试?

例如,NUnit 具有允许多个数据驱动案例的 TestCase 属性。

0 投票
2 回答
1676 浏览

resharper - 如何将 Machine.Specifications 与 ReSharper 6 集成?

我正在使用 ReSharper 6,并试图让它在 Resharper 测试运行器中获取我的 MSpec 测试。不幸的是,我似乎无法让它发挥作用。

我已将 MSpec dll 文件(Machine.Specifications.dll 和 Machine.Specifications.ReSharperRunner.5.1.dll)复制到 ReSharper 插件目录,但似乎找不到该插件。打开测试运行器并刷新时,不会拾取任何测试。

我确实意识到测试运行器插件适用于 5.1 版,但 ReSharper 至少应该在我的解决方案中找到测试,即使它无法使用 5.1 运行器运行它们?

关于如何让它工作的任何建议?

0 投票
3 回答
738 浏览

c# - 如何在继承类的规范中包含基类的规范?

我有一个RSSDataSourceParser完全被 MSpec 规范覆盖的类。我也有一个继承的类,MultimediaRSSDataSourceParser. 它完成了所有父功能以及 iTunes RSS 扩展的识别。我在单独的规范中介绍了扩展功能。

但是,阅读测试套件的业务人员只能看到MultimediaRSSDataSourceParser. 他们也希望看到从 继承的功能RSSDataSourceParser

复制这些规范听起来很荒谬,并且可能会导致未来的代码管理问题。有没有办法从父母那里继承规范?

0 投票
2 回答
628 浏览

c# - 如何让 ReSharper 停止在我的 MSpec 成员上放置显式访问修饰符?

我正在使用 Machine.Specifications,我对 VS2010/Resharper 如何不断尝试格式化我的代码感到非常恼火......例如:

变成:

我一按回车。啊!一定有办法解决这个问题,不是吗?

0 投票
2 回答
500 浏览

unit-testing - 使用 MSpec 对存储库进行单元测试,我这样做对吗?

一天内我的第二个 MSpec 问题,这是一个新记录。我正试图很快地在 MSpec 上变得聪明,但我遇到了一些 MSpec 一直存在的老问题。

场景:我有一个包含一堆卡通的存储库。现在我只需要在一个名称参数上过滤这个集合,它是一个字符串。有人告诉我,稍后我需要对更多属性进行过滤,因此我决定创建一个类,该类通过 IoC 接收我的 ICartoonRepository,并包含一个名为 GetByName(string name) 的简单方法。

您可能会争辩说这是矫枉过正,但我​​正在尝试自学如何使用 MSpec 并以更 TDD 的方式工作。

所以我创建了以下内容:

由于存储库为空,因此在存根上失败。我还有其他几个测试通过(简单地测试 GetAll() 等)。我需要向存储库添加东西来测试它吗?这就是我难过的地方,请温柔一点。

另外,如果我在存根中编写 linq 语句,我似乎在实际实现和测试中做了两次。这是重点吗?感觉不对。有没有更好的方法可以编写这个测试?

为了清楚起见,这里是实际的实现(我省略了接口和类,它们只有一个属性:

编辑 1:基于缺乏响应,我应该说,如果我使用 NUnit 之类的东西,我会在测试类上创建一个类似“LoadDummyData”的方法并将数据扔到存储库中,然后我会进行复杂的过滤或查看模型构建并手动检查发生了什么。这使得大型重构成为一件苦差事。看起来规格允许您避免这种情况?

编辑2:这是我现在通过的更正测试。如果我做得对,请告诉我,我想我是。再次感谢牵手!

编辑3:给你两分,但不幸的是我只能奖励一个最佳答案。

0 投票
3 回答
474 浏览

testing - 如何使用 Rhino Mocks 和 MSpec 测试抽象类的虚拟属性?

FirstName在抽象类上有一个虚拟属性Foo. 我需要测试虚拟财产的行为。执行此测试时,该方法永远不会触发(因此无论方法体中有什么,测试总是失败)。我怎样才能使这种方法成为我正在测试的系统?我该如何测试这种方法?

我正在使用 Rhino Mocks 3.5 和 mspec。