2015-02-09 99 views
0

我这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

该错误是在这条线 类PruebasUnitarias :: Prueba – 2015-02-09 22:01:09

回答

0

您必须先声明模块,然后才能放入类。试试这个:

module PruebasUnitarias 
    class Prueba 
    ... 
    end 
end 
class PruebaComplejo < PruebasUnitarias::Prueba 
    ... 
end 
+0

谢谢你,但我不能改变德班声明,以PruebaComplejo必须是一流的PruebaComplejo 2015-02-09 22:14:21

+0

@VictorRamirezLopez:固定。请参阅编辑。 – Linuxios 2015-02-09 22:15:11

+0

oo谢谢你,finaly它的作品!非常感谢你 – 2015-02-09 22:18:52

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测试,看看如果事情是相等或不相等,然后返回truefalse。测试本身就是这样简单地比较值,并让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 
+0

谢谢你,已经改变了它。它是我在Ruby中的第二个程序,我总是用Java编程 – 2015-02-09 22:15:05

相关问题