와 나는 다음과 같은 ROR RSpec에 테스트가 있습니다. 이 방법은 올바르게 정의되고 의도 된대로 수행됩니다. 문제는 두 번째 예제에서 @public_topic 주변의 []을 수정하고 제거 할 때 테스트가 실패하는 이유입니다.이해 액티브 :: 관계는 RSpec에 예
describe "scopes" do
before do
@public_topic = Topic.create!(name: RandomData.random_sentence, description: RandomData.random_paragraph)
@private_topic = Topic.create!(name: RandomData.random_sentence, description: RandomData.random_paragraph, public: false)
end
describe "visible_to(user)" do
it "returns all topics if user is present" do
user = User.new
expect(Topic.visible_to(user)).to eq(Topic.all)
end
it "returns only public topics if user is nil" do
expect(Topic.visible_to(nil)).to eq([@public_topic])
end
end
end
visible_to
의 구현을 보지 않고 말을하기 어렵다
scope :visible_to, -> { where(public: true) }
반환하기로하여'visible_to' 방법은 무엇입니까 :
그래서, 본질적으로, 그것은 아래에 온다. 테스트에서 뭔가있는 배열을 반환 해야하는 것처럼 보입니다. 그러므로'[]'를 꺼내 객체를 반환하면 실패합니다. –