[英]Ruby - uninitialized constant
我有这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
您必须先声明模块,然后才能将类放入其中。 试试这个:
module PruebasUnitarias
class Prueba
...
end
end
class PruebaComplejo < PruebasUnitarias::Prueba
...
end
正如关于编程风格的说明一样,在测试值时,您需要以更简单的方式思考。 考虑以下更改:
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
另外,对方法名称(而不是camelCase)使用snake_case。 ItsAReadabilityThing:
def assert_cierto(valor)
def assert_falso(valor)
def assert_igual(num1, num2)
def assert_distinto(num1, num2)
def assert_nil param
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.