我是Rspec和Factory Girl的新手。我用它来测试已经存在的模型。有没有办法使用Factory Girl生成的副本在apps / model目录中测试原始模型中的现有类方法?
答案 0 :(得分:0)
当然。只需在spec / models目录中创建spec文件。
以下是certificate_spec.rb
模型的示例Certificate
文件,该文件应验证证书是否为first_name
。
require 'spec_helper'
describe "Certificate" do
let(:certificate) { FactoryGirl.build(:certificate) }
it "is valid with valid attributes" do
expect(certificate).to be_valid
end
it "is not valid without a first name" do
certificate.firstname_a = nil
expect(certificate).not_to be_valid
end
end
要测试特定的类方法,请根据需要设置模型,使用工厂或从工厂创建实例并进行修改。
然后只需在实例上调用您需要的方法:
it "should respond to #doSomething with true" do
expect(certificate.doSomething).to be_true
end
正如Junchao Gu所指出的,我没有提供上面测试类方法的例子。
根据定义,类方法是在类而不是它的任何实例上定义的。因此,您不需要FactoryGirl创建的任何实例,以便能够测试类方法。只需在课堂上设定您的期望。
例如,假设User
类提供了用户可以成为其成员的角色列表。您可能希望确保以某种方式定义这些角色:
require 'spec_helper'
describe "User" do
describe ".available_roles" do
it "should return anonymous, member, moderator, admin in that order" do
expect(User.available_roles).to_equal %w{anonymous member moderator admin}
end
end
end
请注意,expecation是针对User
类的,而不是针对它的实例。