Ich habe meine Methode create
:Wie testet man mit rspec ob eine Methode innerhalb einer anderen Methode aufgerufen wurde?
module AnswerCreator
class Creator
def initialize(answer)
@answer = answer
end
def create
test_cases_results = run_test_cases
@answer.attempt = get_attempt_number
@answer.correct = correct?(test_cases_results)
ActiveRecord::Base.transaction do
@answer.save!
save_test_cases_results(test_cases_results)
Scorer::Changer.new(@answer).change
end
ComputeAnswerSimilarityJob.perform_later(@answer)
end
...
end
end
Und ich habe den folgenden Test, um es:
it "creates the answer with the right attempt number, create the test case results and add the answer to be processed in background" do
answer_test_case_result_count = AnswerTestCaseResult.count
jobs_count = enqueued_jobs.size
user = create(:user)
team = create(:team)
question = create(:question)
create_pair(:test_case, question: question)
create(:answer, question: question, user: user, team: team)
answer = build(:answer, question: question, user: user, team: team)
# These answers must be ignored >>
create(:answer, question: question, user: user)
create(:answer, question: question, team: team)
create(:answer, user: user, team: team)
described_class.new(answer).create
expect(answer.new_record?).to be_falsey
expect(answer.attempt).to eq 2
expect(AnswerTestCaseResult.count).to eq answer_test_case_result_count + 2
expect(enqueued_jobs.size).to eq jobs_count + 1
end
Diese Creator
Klasse beschäftigt sich mit der Schaffung Logik, wenn ein Antwort-Objekt erstellt wird. Meine Klasse Changer
behandelt die Bewertungslogik eines Antwortobjekts. Ich möchte diese Logik nicht innerhalb der Creator
testen, aber ich möchte sicherstellen, dass die change
Methode von Changer
aufgerufen wird.
Wie kann ich das testen?
alle Optionen hat gut funktioniert. Danke vielmals! – rwehresmann