您好我有一个用户模型,其中包含许多我需要进行的属性和验证。 我想使用测试驱动开发来开发我的应用程序,但我很难编写简单的验证测试,例如没有空白电子邮件,独特的电子邮件,正确的电子邮件地址。
那么开始编写测试的最佳方法是什么?
答案 0 :(得分:2)
Shoulda(http://github.com/thoughtbot/shoulda/wiki/Usage)将允许轻松检查此类ActiveRecord检查。
should_not_allow_values_for :email, "blah", "b lah"
should_allow_values_for :email, "a@b.com", "asdf@asdf.com"
它非常清楚代码的作用,它包括一些有用的检查。
答案 1 :(得分:0)
创建有效属性的哈希,这些哈希将成功创建您要测试的类型的对象。这通常在前一步骤中完成一次。然后,对于要检查验证的每个属性,创建一个类似于此的测试类型(使用rSpec语法):
obj_under_test = MyModel.new(@valid_attributes)
object_under_test.email = nil
obj_under_test.should_not be_valid
在这种情况下,@valid_attributes
是您创建的哈希。另一种方法是使用合理的工厂为每次测试生成对象。看看FactoryGirl,Machinist,Fixjour的一些例子。所以使用你的例子,这样的事情是有道理的:
您可以将测试/规格驱动到您喜欢的粒度级别。许多人喜欢每个案例只测试一件事(或“例子”,用BDD说法)。因此,您可能会拥有一系列测试,例如“应该提供电子邮件”,“如果提供了电子邮件,则应该有一封有效的电子邮件”,“应该在有效域中发送电子邮件”等等。