0
我有我的方法create
:如何用rspec测试一个方法是否在另一个方法内被调用?
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
和我有下面的测试吧:
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
这Creator
与创建应答对象的时候,创建逻辑类交易。我的Changer
类处理与Answer对象关联的评分逻辑。我不想在Creator
里测试这个逻辑,但我想确保调用Changer
的change
方法。
我该如何测试?
所有选项工作得很好。非常感谢! – rwehresmann