我有两个以下型号:
class Project < ActiveRecord::Base
has_many :tasks, inverse_of: :project
attr_accessible :tasks_attributes
def method_1
tasks.map |t|
t.name
end
end
class Task < ActiveRecord::Base
belongs_to :project, inverse_of: :tasks
attr_accessible :name
validates :name, presence: true
end
我正在为project_spec.rb编写测试。我测试了关联和验证,它们都很好。但不知怎的,我无法通过method_1的测试。我改变了method_1代码,只是为了检查。我得到的结果是[nil],即tasks.first是零。我不知道我错过了什么。
def method_1
[tasks.first]
end
我的测试代码是,
...
let(:project) do
build_stubbed(:project, :project_data)
end
describe "#method_1" do
before do
project.stub_chain(:task, :name).and_return("task A")
end
subject {project.method_1}
it "should be the name of the task of the project" do
should eq ["task A"]
end
end
当我运行localhost:3000时,它有同样的问题。但是在rails控制台中,method_1也能正常工作。有人可以帮忙吗?它困扰了我好几天。
答案 0 :(得分:0)
以下是一些可能有用的评论:
method_1
依赖于tasks
,但你已经存根task
(单数),所以它没有任何效果。method_1
在Rails控制台中工作,因为您在开发数据库中有与项目相关的任务