1
I持って自分のモジュールに次のテスト場合
module SimilarityMachine
...
def answers_similarity(answer_1, answer_2)
if answer_1.compilation_error? && answer_2.compilation_error?
return compiler_output_similarity(answer_1, answer_2)
elsif answer_1.compilation_error? || answer_2.compilation_error?
return source_code_similarity(answer_1, answer_2)
else
content_sim = source_code_similarity(answer_1, answer_2)
test_cases_sim = test_cases_output_similarity(answer_1, answer_2)
answers_formula(content_sim, test_cases_sim)
end
end
...
end
が、私はこれらの「条件があれば」、(右メソッドが呼び出されることを保証するために、これらすべてをテストしたいと思います方法は、SimilarityMachine
モジュールからである)。これを行うには、私が持っている:私は右if
に行く(最初、私は前にテストしたので、私はそれを確信している)作成した両方の答えと
describe SimilarityMachine do
describe '#answers_similarity' do
subject { answers_similarity(answer_1, answer_2) }
let(:answer_1) { create(:answer, :invalid_content) }
context "when both answers have compilation error" do
let(:answer_2) { create(:answer, :invalid_content) }
it "calls compiler_output_similarity method" do
expect(described_class).to receive(:compiler_output_similarity)
subject
end
end
end
。しかし、結果は
1) SimilarityMachine#answers_similarity when both answers have compilation error calls compiler_output_similarity method
Failure/Error: expect(described_class).to receive(:compiler_output_similarity)
(SimilarityMachine).compiler_output_similarity(*(any args))
expected: 1 time with any arguments
received: 0 times with any arguments
私は間違っていますか?
パーフェクト、@PeterAlfvin。モジュールをオブジェクトに追加し、テストでこのオブジェクトをチェックしました。出来た! – rwehresmann