Ruby on rails Rspec工厂女孩测试类方法?

Ruby on rails Rspec工厂女孩测试类方法?,ruby-on-rails,rspec,factory-bot,Ruby On Rails,Rspec,Factory Bot,我是Rspec和工厂女孩的新手。我用它来测试已经存在的模型。是否有一种方法可以使用Factory Girl生成的副本从apps/model目录中的原始模型测试现有的类方法?当然可以。只需在spec/models目录中创建spec文件 下面是一个用于证书模型的证书规范.rb文件示例,该文件应验证证书是否有名字 require 'spec_helper' describe "Certificate" do let(:certificate) { FactoryGirl.build(:certi

我是Rspec和工厂女孩的新手。我用它来测试已经存在的模型。是否有一种方法可以使用Factory Girl生成的副本从apps/model目录中的原始模型测试现有的类方法?

当然可以。只需在spec/models目录中创建spec文件

下面是一个用于
证书
模型的
证书规范.rb
文件示例,该文件应验证证书是否有
名字

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
使现代化 正如顾俊超所指出的,我没有提供上面测试类方法的示例

根据定义,类方法是在类上定义的,而不是在类的任何实例上定义的。因此,为了能够测试类方法,您不需要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针对的是
用户
类,而不是它的实例。

我对rspec+factorygirl也是新手。但我很确定你的两个例子都不是“类方法”