こんにちは、キュウリの理解を深めるためにコースを受講しています。コースは少し古いので、rspec 構文を期待どおりに更新する必要がありましたが、それ以外は非常に注意深く従っています。この最近のテストに合格できず、その理由がわかりません。私が受け取っているエラーは以下のとおりです。95 を受け取るべきときに nil を受け取っていることは理解していますが、その理由はまだわかりません。
When They submitted an assignment # features/step_definitions/teacher_grade_assignment.rb:6
Then the assignment has a grade # features/step_definitions/teacher_grade_assignment.rb:14
expected: 95
got: nil
(compared using ==)
(RSpec::Expectations::ExpectationNotMetError)
./features/step_definitions/teacher_grade_assignment.rb:15:in `/^the assignment has a grade$/'
features/teacher_can_grade_assignment.feature:11:in `Then the assignment has a grade'
Failing Scenarios:
cucumber features/teacher_can_grade_assignment.feature:7 # Scenario: Teacher can grade assignment
teacher_grade_assignment.rb
Given(/^I have a student$/) do
@teacher = Teacher.new
@student = Student.new
end
Given(/^They submitted an assignment$/) do
@teacher.submit_assignment(@student, Assignment.new)
end
When(/^I grade the assignment$/) do
@teacher.record_grade(@student, 95)
end
Then(/^the assignment has a grade$/) do
expect(@teacher.assignment_for_student(@student).grade).to eq(95)
end
student_assignment_steps.rb
Given(/^I am a student$/) do
@student = Student.new #setting as an instance variable to access later on
@teacher = Teacher.new
end
When(/^I submit an assignment to my teacher$/) do
@assignment = Assignment.new
@teacher.submit_assignment(@student, @assignment)
end
Then(/^my teacher should have my assignment$/) do
expect(@teacher.assignment_for_student(@student)).to eq(@assignment)
end
先生.rb
class Teacher
def initialize
@assignments = {}
end
def record_grade(student, grade)
assignment = @assignments[student] #assignment equal to assignments of the student
assignment.grade = grade
@assignments[student] = assignment
end
def submit_assignment(student, assignment)
@assignments[student] = assignment
end
def assignment_for_student(student)
@assignments[student]
end
end
teacher_spec.rb
require_relative "../lib/teacher"
require "rspec"
describe Teacher do
it "should store assignments" do
student = double
assignment = double
subject.submit_assignment(student, assignment)
expect(subject.assignment_for_student(student)).to eq(assignment)
end
describe "should record a grade" do
it "should record and the grade" do
student = double
assignment = double
expect(assignment).to receive(:grade=).with(95)
subject.submit_assignment(student, assignment)
subject.record_grade(student, 95)
end
end
end
Assignment_spec.rb
require_relative "../lib/assignment"
describe Assignment do
it "should store a grade" do
subject.grade = 60
expect(subject.grade).to eq(60)
end
end
割り当て.rb
class Assignment
attr_accessor :grade
end
学生.rb
class Student
end
teacher_can_grade_assignment.feature
Feature: Teacher can grade assignment
As a Teacher
I can grade my students' assignments
So that they can know their knowledge level
Scenario: Teacher can grade assignment
Given I have a student
And They submitted an assignment
When They submitted an assignment
Then the assignment has a grade