问题标签 [bdd]

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 回答
288 浏览

bdd - “标准” BDD 规范的存储库

你知道 BDD 规范的任何资源或库吗?

例如,几乎每个 Web 应用程序都有一个登录过程。一些“标准”功能可能是处理忘记密码、重置密码等。

我正在考虑诸如 BDD 规范的代码片段存档之类的东西,因此我们不必都从头开始编写它们。

0 投票
5 回答
865 浏览

asp.net-mvc - ASP.net MVC RTM 测试命名约定

我正在开发一个 asp.net mvc 应用程序并编写我的单元测试 BDD 样式。例如。

GetResource_WhenResourceFileExists_ShouldReturnResources()

但是当我为我的控制器编写测试时,我通常有两个同名的方法。一个没有参数用于获取请求,一个用于帖子。这里有没有人有一个好的命名约定来区分两者?

我能想到:

有什么意见吗?

0 投票
2 回答
2511 浏览

asp.net-mvc - 领域驱动设计:何时创建聚合根?

我第一次尝试使用 ASP.NET MVC 项目实现 DDD,但我正在努力解决一些问题。

我有 2 个相关实体,一个公司和一个供应商。我最初的想法是 Company 是一个聚合根,而 Supplier 是 Company 的一个价值对象。所以我有一个公司的存储库,而供应商没有一个存储库。

但是当我开始构建我的应用程序时,我最终需要为供应商单独列出、创建和更新表单。这个列表很简单,我可以调用 Company.Suppliers,创建很糟糕,我可以做 Company.Suppliers.Add(supplier),但更新让我头疼。由于我只需要一个实体,而且我不能在表单之间准确地将其粘贴到内存中,因此我最终需要重新获取公司和所有供应商,并找到我需要绑定到它的那个,然后再次对其进行修改并保留它回到数据库。

如果我有供应商的存储库,我真的只需要做一个 GetOne。我可以通过将 GetOneSupplier 添加到我的 Company 或 CompanyRepository 来添加一些解决方法,但这似乎很垃圾。

所以,我真的想知道它是否实际上是一个值对象,而不是一个完整的域实体本身。

tldr;

需要单独的列表/创建/更新视图/页面是否表明实体应该是它自己的根?

0 投票
2 回答
1538 浏览

nhibernate - BDD/DDD 在哪里放置基本实体验证的规范?

或者,基本实体验证是否被视为规范?

一般来说,将基本实体验证(名称不能为空或空,日期必须大于 xxx)保留在实际实体中还是在规范之外更好?

如果在规范中,那会是什么样子?您是否会对每个字段都有一个规范,或者将其全部包含在一个 EntityIsValid 类型规范中?

0 投票
1 回答
3063 浏览

c# - Fluent NHibernate 有很多收集问题

更新: 似乎将我的映射从 Cascade.All() 更改为 Cascade.AllDeleteOrphan() 解决了我的大部分问题。我仍然必须在 OperatingState 上显式设置 Company 属性,这似乎没有必要,因为它被添加到 Company 实体中,但至少我可以在更新期间使用它。我仍然需要通过创建来测试它。

如果有人能解释这一点,那将是一个很大的帮助。

更新 2:在玩了一些之后,看来我并不总是必须指定父实体。

原帖

我有 2 个相关实体

它们的映射如下:

所以一切都很好,直到我尝试用新的运营状态更新公司

它爆炸了:

无法将值 NULL 插入到列“CompanyID”、表“ConsumerCartel.dbo.CompanyOperatingState”中;列不允许空值。插入失败。该语句已终止。

但是,如果我进行 2 次更改,它会起作用

除了旧状态之外,这将添加新状态,这不是我想要的。但是,即使明确设置公司(将其添加到映射列表时我不应该这样做?)如果列表被清除,它也不起作用

此代码已在其他实体上运行,但不适用于此,因此我认为这应该按书面方式运行。我究竟做错了什么?

0 投票
4 回答
1672 浏览

perl - Perl 中用于单元测试和模拟对象的好的框架是什么?

您会推荐哪些框架和工具用于 Perl 中的单元测试和模拟对象?

我有一个现有的 Perl 应用程序,主要执行数据库访问、读取和写入文件。该应用程序基本上是一个批处理作业类型的应用程序,它从文件和数据库中读取一堆东西,并将一堆新文件和一些东西写入数据库。

该应用程序当前没有任何单元测试,但我希望重构应用程序以进行良好的单元测试。

对于单元测试和模拟对象,您会推荐哪些框架和工具?例如类似于Java的HamcrestJMock的东西?

另外,是否有任何好的基于 BDD(行为驱动开发)的 Perl 测试框架?

0 投票
5 回答
4435 浏览

unit-testing - 如何以规范形式编写单元测试?

在许多情况下,我很难为类和方法想出一个好的单元测试名称。通常,我尝试遵循以下表格:

有些人将 Given、When 和 Then 放在要明确的部分上。我喜欢它,因为它似乎使单元测试更清楚地表明它正在测试什么。除了考虑 BDD 工具包之外,我还需要一些关于如何使用普通旧 xUnit 工具的建议。

我在这样的场景中遇到了特别困难:

当应用程序启动时,主窗体加载并且用户看到用户可以单击的链接列表。

或者更好的用例场景是:

用户可以从链接列表中选择一个链接。

我不确定,但我试图描述一种行为,您运行应用程序并且表单加载了可点击链接列表。并将其转化为单元测试。

什么是给定的,什么时候,然后呢?

0 投票
2 回答
2440 浏览

testing - BDD的解释是什么?

此线程中引用了 BBD (Karl Seguin 的回答)。什么是 BDD?

0 投票
3 回答
225 浏览

design-patterns - 告诉我我的实体验证有哪些愚蠢之处(以及如何改进它)

我有一个实现接口 IValidatable 的 IEntity 接口

并且为了方便起见,我已经实现了我的 Entity 类,例如:

默认情况下,实体是有效的,直到 GetRuleViolations() 或 GetPersistenceRuleViolations() 被覆盖。

我知道这对于验证来说有点幼稚,所以除了任何错别字之外,还有什么可以改进的?

0 投票
2 回答
1225 浏览

unit-testing - 如何(策略)以 BDD 样式对属性(获取/设置)进行单元测试?

我有一个(许多)具有属性的类。有些有逻辑,有些没有。假设我想测试这些属性,我该怎么做呢?

最近,我对创建单元测试的 BDD 风格很感兴趣。

这里这里

所以我会设置上下文 - 基本上创建 SUT 并加载所需的任何内容。然后在每个观察(测试方法)中,我会验证一个特定的属性是否包含它应该包含的内容。

这是我的问题。如果 SUT 有 20 个属性,那么我要创建 20 个观察/测试吗?如果其中一个属性包含更有趣的逻辑,我猜可能会更多。

但是,如果在一次观察中聚合简单的那些会更好吗?

或者如果我使用自定义属性(可以多次应用于方法)怎么办。这样我就可以做到,例如: