1
爲什麼您有時需要使用@引用您的類屬性,並且有時沒有它?如果我刪除'@completed'並替換'completed',則測試失敗。但是在Project類中,任務屬性的設置方式相同,但可以在不使用@的情況下使用。要在Ruby on Rails中使用@還是不要@
class Task
attr_accessor :size, :completed
def initialize(options = {})
@completed = options[:completed]
@size = options[:size]
end
def completed?
@completed
end
def mark_completed
@completed = true
end
end
class Project
attr_accessor :tasks
def initialize
@tasks = []
end
def done?
tasks.reject(&:completed?).empty?
end
def total_size
tasks.sum(&:size)
end
def remaining_size
tasks.reject(&:completed?).sum(&:size)
end
end
describe "estimates" do
let (:project) { Project.new }
let (:done) { Task.new(size: 2, completed: true) }
let(:small_not_done) { Task.new(size: 1) }
let(:large_none_done) { Task.new(size: 4) }
before(:example) do
project.tasks = [done, small_not_done, large_none_done]
end
it "can calculate total size" do
expect(project.total_size).to eq(7)
end
it "can calculate remaining size" do
expect(project.remaining_size).to eq(5)
end
end
這是無關緊要的問題,但是我會將'done?'作爲'tasks.all?(&:completed?)'執行。 –