자동화 테스트를 위해 아래 테스트 구조가 있습니다.NoMethodError : 정의되지 않은 메소드 'assert_equal'with minitest
#/project/class/Calculator.rb
require 'TestModule'
require 'MathOperation'
class Calculator
include TestModule
include MathOperation
def initialize(num1, num2)
@num1 = num1
@num2 = num2
end
end
#/project/methods/MathOperation.rb
module MathOperation
def operation_addition
addition = @num1 + @num2
return addition
end
end
#/project/methods/TestModule.rb
module TestModule
def test_addition(value)
assert_equal 25, value
end
end
#/project/tescases/TestCalculator.rb
require 'minitest/autorun'
require 'calculator'
class TestCalculator < Minitest::Test
def setup
@calc = Calculator.new(15, 10)
end
def test_proper_addition
resolution = @calc.operation_addition
@calc.test_addition(resolution)
end
end
테스트 클래스 TestCalculator를 실행할 때이 오류가 발생합니다. 내가 클래스 TestCalculator
에 assert_equal
방법을 사용하는 경우
NoMethodError: undefined method 'assert_equal' for #<Calculator:0x00000002a77518 @num1=15, @num2=10
내가 당신의 디자인을 이해하지 않는,하지만 난 당신의 테스트 코드가 완전히 비 - 테스트 코드로부터 분리되어야한다고 말할 수 있습니다 :
TestCalculator
이 어서 트를 수행하면서,Calculator
가 모든 일을하자. 예 : 'Calculator'는'TestModule'을 포함해서는 안됩니다. – Max정확히 어떤 것이 분리되어 있는지 확실하지 않습니다. 그러나'Calculator'에서'TestModule'을 제거하면'TestModule'에서'Calculator' 객체로 메소드를 호출 할 수 없습니다. 내 문제는 모듈'TestModule' assert 메서드를 사용할 수 없다는 것입니다. 하지만 나는 루비 전문가가 아니며 어쩌면 내 디자인이 완전히 틀렸다. – user3483829