Ruby on rails Rails:重复单元测试-干燥?
是否有标准实践来干燥rails中的重复单元测试用例。例如,我有许多具有“name”属性的模型,我想对每个模型进行相同类型的单元测试。我隐约看到,我需要创建的模块是重用的吗?这可能/正确吗 有关于创建干式单元测试的建议/实践吗 示例代码:我想对具有相同命名属性的许多其他模型进行相同类型的测试Ruby on rails Rails:重复单元测试-干燥?,ruby-on-rails,ruby-on-rails-3,unit-testing,tdd,dry,Ruby On Rails,Ruby On Rails 3,Unit Testing,Tdd,Dry,是否有标准实践来干燥rails中的重复单元测试用例。例如,我有许多具有“name”属性的模型,我想对每个模型进行相同类型的单元测试。我隐约看到,我需要创建的模块是重用的吗?这可能/正确吗 有关于创建干式单元测试的建议/实践吗 示例代码:我想对具有相同命名属性的许多其他模型进行相同类型的测试 require 'test_helper' # Factory class class UserFactory # Creates a valid template user def self.
require 'test_helper'
# Factory class
class UserFactory
# Creates a valid template user
def self.create
user = User.new do |u|
u.name = "Test User #{rand}"
u.notes = "test notes"
end
user
end
end
class UserTest < ActiveSupport::TestCase
# ------------
# Init
# ------------
def setup
@valid_usr = UserFactory.create
end
def teardown
@valid_usr.destroy if @valid_usr.persisted?
@valid_usr = nil
end
# ------------
# Name
# ------------
test "should not have a dummy user object" do
user = User.new
assert !user.save
end
test "unique user name must be saved" do
assert UserFactory.create.save!, "First entry must be saved"
user = UserFactory.create
user.name = "Different name"
assert user.save!, "Unique user must be saved"
user.destroy
end
test "non unique user names must not be saved" do
user1 = UserFactory.create
user2 = UserFactory.create
user1.name = "Same User name"
user2.name = "Same User name"
assert user1.save!, "First entry must be saved"
assert !user2.save, "Duplicate name should not be saved"
user1.destroy
user2.destroy
end
test "should not have user without a valid name" do
# Invalid name
@valid_usr.name = " "
assert !@valid_usr.save
end
end
需要“测试助手”
#工厂级
类用户工厂
#创建有效的模板用户
def self.create
user=user.new do | u|
u、 name=“测试用户#{rand}”
u、 notes=“测试注释”
结束
用户
结束
结束
类UserTest
移动模块中的重复代码并将其包含在实际测试中(如在类中)。移动模块中的重复代码并将其包含在实际测试中(如在类中)。它工作正常!不过,我希望下一步将模块参数化。你有什么想法吗?我想你可以用缺少的方法来破解一些东西,但我不会用任何魔法来测试。也许您最好使用RSpec。RSpec是否允许更好的方法编写干测试用例?任何例子/帖子都会很有用。效果很好!不过,我希望下一步将模块参数化。你有什么想法吗?我想你可以用缺少的方法来破解一些东西,但我不会用任何魔法来测试。也许您最好使用RSpec。RSpec是否允许更好的方法编写干测试用例?任何示例/帖子都将非常有用。