我是测试驱动开发概念的新手(对Rails来说还是新手)。我一直坚持如何为我的应用程序编写测试。
作为背景资料,网络应用程序是一个同行评估工具,在该工具中,各个小组被分配调查,要求他们评估他们的同行。所以一个示例问题看起来像这样:
Rate your peers on time management.
- Peer 1: __
- Peer 2: __
- Yourself: __
我如何在内部进行此设置:
我有Survey
模型与has_many
模型的Assignment
关联(控制群组间调查的可见性),它充当{{1}的联接模型和Survey
模型。在Group
模型中,与Group
的{{1}}关联。
由于可以为多个组分配相同的调查,因此我必须找出要求某个用户评估哪个has_many
。 (因此调查将是相同的,但上面示例中显示的人将从用户更改为用户)。
我决定创建一个方法User
,它基本上会返回已分配给调查的用户组。
我希望能够对这种方法进行单元测试。到目前为止我正在使用rspec和factory_girl。我有几个问题:
Group
,assignees_for_user(user)
和Assignment
创建实例,对吗? 谢谢!
答案 0 :(得分:0)
这个答案比我想象的要复杂得多(说实话,我猜这就是为什么没有人回答的问题:P)
您可以使用像mocha这样的框架来模拟find:How to test ActiveRecord witout Rails?
之类的内容我最终使用了rr。但是当涉及到activerecord关联时,我仍然没有找到一个好方法,因为我不完全理解ActiveRecord关联代理对象。所以我想我的所有这些内容,老实说,不要浪费我的时间嘲笑协会:一句古老的谚语,你不能单独测试一些不属于你自己的东西!
答案 1 :(得分:0)
我是否可以建议从activerecord模型(将其视为数据库适配器)和控制器(将其视为GUI适配器)重构为lib /中的普通旧ruby对象(PORO)的业务逻辑要走的路。
Hexagonal Rails by Matt Wynne,Rails Conf 2013 Building Extractable Libraries in Rails by Patrick Robertson,Making ActiveRecord Models Thin和Gary Bernhardt是个好地方。