我有这4个类,代码很简单,但是当我尝试生成时,它会返回错误,如
in `<main>': uninitialized constant PruebasUnitarias (NameError)
代码是这样的,我不知道出了什么问题,我认为这是因为要求,但我在一个文档中都有,但仍然崩溃。
class Complejo
def initialize (real, imaginario)
@real = real
@imaginario = imaginario
end
def sumar (complejo)
@real = @real + complejo.real
@imaginario = @imaginario + complejo.imaginario
end
attr_reader :real, :imaginario
end
class Prueba
def assertCierto(valor)
return valor
end
def assertFalso(valor)
return valor
end
def assertIgual(num1, num2)
if(num1 == num2)
return true
end
return false
end
def assertDistinto(num1, num2)
if(num1 != num2)
return true
end
false
end
def assertNil param
if (param == nil)
return true
end
false
end
def assertContiene(param1, param2)
param1.include?(param2)
end
end
class PruebasUnitarias::Prueba
def run
metodos = self.methods
if(self.respond_to? :inicializacion)
self.inicializacion
end
end
end
class PruebaComplejo < PruebasUnitarias::Prueba
def inicializacion
@c1 = Complejo.new(3,5)
@c2 = Complejo.new(1,-1)
end
def prueba_suma
@c1.sumar(@c2)
assertIgual(@c1.real, 4)
assertIgual(@c1.imaginario, 4)
end
def prueba_suma_cero
@c2.sumar(Complejo.new(0,0))
assertCierto(@c2.real==1)
assertCierto(@c2.imaginario==-1)
end
def prueba_suma_nula
@c2.sumar(nil)
assertIgual(@c2.real, 1)
assertIgual(@c2.imaginario, -1)
end
def imprimir (complejo)
puts "complejo: #{complejo.real}, #{complejo.imaginario}i"
end
end
答案 0 :(得分:0)
您必须在将类放入其中之前声明该模块。试试这个:
module PruebasUnitarias
class Prueba
...
end
end
class PruebaComplejo < PruebasUnitarias::Prueba
...
end
答案 1 :(得分:0)
就像关于编程风格的注释一样,在测试您的值时,您需要用更简单的术语来思考。考虑这些变化:
def assertCierto(valor)
valor
end
def assertFalso(valor)
valor
end
def assertIgual(num1, num2)
num1 == num2
end
def assertDistinto(num1, num2)
num1 != num2
end
def assertNil param
param == nil
end
没有必要使用if
测试来查看某些内容是否相等,然后返回true
或false
。测试本身就这样做,所以只需比较值,让Ruby默认返回结果。
1 == 1 # => true
1 == 2 # => false
1 != 1 # => false
1 != 2 # => true
另外,使用snake_case作为方法名称,而不是camelCase。 ItsAReadabilityThing:
def assert_cierto(valor)
def assert_falso(valor)
def assert_igual(num1, num2)
def assert_distinto(num1, num2)
def assert_nil param