0

我对测试驱动开发的概念很陌生(对 Rails 也很陌生)。我不知道如何为我的应用程序编写测试。

作为背景,Web 应用程序是一个同行评估工具,其中为各个小组分配调查,要求他们评估他们的同行。所以一个示例问题如下所示:

Rate your peers on time management.
 - Peer 1: __
 - Peer 2: __
 - Yourself: __

我如何在内部进行设置是这样的:

我有一个Survey与模型has_many关联的Assignment模型(控制组间调查的可见性),该模型充当模型的连接Survey模型Group。在Group模型中存在has_manyUsers 的关联。

因为可以为多个组分配同一个调查,所以我必须找出Group要求某个用户评估哪个用户。(因此调查将是相同的,但出现在上面示例中的人会因用户而异)。

我决定创建一个方法 ,assignees_for_user(user)它本质上将返回已分配给调查的用户组。

我希望能够对这种方法进行单元测试。到目前为止,我正在使用 rspec 和 factory_girl。我有几个问题:

  1. 我的方法在设计上是否正确?
  2. 我应该测试这个吗?如果是这样,我需要为 、 和 创建实例AssignmentGroupUser吗?
  3. 我可以存根/模拟这些实例而不将它们持久化到数据库中的最佳方法是什么?还是我必须这样做?

谢谢!

4

2 回答 2

0

我是否可以建议将业务逻辑从 activerecord 模型(将其视为数据库适配器)和控制器(将其视为 GUI 适配器)重构为 lib/ 中的普通旧 ruby​​ 对象(PO​​RO)是要走的路.

Matt Wynne 的 Hexagonal RailsPatrick Robertson 的 Rails Conf 2013 构建 Rails 中的可提取库使 ActiveRecord 模型变薄和 Gary Bernhardt 都是不错的起点。

于 2013-07-29T00:48:24.127 回答
0

这个答案比我预期的要复杂(老实说,我想这就是为什么没有人回答它的原因:P)

你可以使用 mocha 之类的框架来模拟 find: How to test ActiveRecord witout Rails?

我最终改用 rr 。但是说到ActiveRecord关联,我还是没有找到好的办法,因为我对ActiveRecord关联代理对象还不是很了解。所以我想我对所有这一切的看法是,老实说,首先不要浪费我的时间来嘲笑关联:正如一句老话所说,你不能对不属于你自己的东西进行单元测试!

于 2013-07-16T14:52:18.723 回答