Я довольно плохо знаком с рубином и практикую его.
Однако в этом упражнении я создаю два банковских счета, используя один и тот же метод и одинаковые значения, и программа ожидает, что оба будут равны.
RSpec возвращает это мне:
Failure/Error: expect(conta1).to eql conta2
expected: #<Conta:0x3161bc8 @numero="2303-2", @nome="Jose da Silva", @saldo=1000.1, @limite=500>
got: #<Conta:0x31615f8 @numero="2303-2", @nome="Jose da Silva", @saldo=1000.1, @limite=500>
(compared using eql?)
Diff:
@@ -1,4 +1,4 @@
-#<Conta:0x3161bc8
+#<Conta:0x31615f8
@limite=500,
@nome="Jose da Silva",
@numero="2303-2",
Содержимое обеих учетных записей одинаковое, но существует конфликт между object_id, как мне решить эту проблему?
Вот код:
it "Two accounts with the same data should be equal" do
conta1 = cria_conta
conta2 = cria_conta
expect(conta1).to eql conta2
end
def cria_conta(numero="2303-2", nome="Jose da Silva", saldo=1000.10, limite=500)
Conta.new(numero: numero, nome: nome, saldo: saldo, limite: limite)
end
Также:
class Conta
attr_accessor :numero, :nome, :saldo, :limite
def initialize(arr)
@numero = arr[:numero]
@nome = arr[:nome]
@saldo = arr[:saldo]
@limite = arr[:limite]
end
def sacar(valor)
possibilidade = false
@@valor = valor
if valor < @saldo
@saldo -= valor
possibilidade = true
elsif valor > @limite
@saldo -= valor
@@saldo = @saldo
possibilidade
end
end
def no_limite?()
if @@valor > @limite
return true
elsif @@valor < @limite
return false
end
end
def depositar(valor)
@saldo += valor
end
def ==(outra_conta)
self.conta == outra_conta
конец
конец
Я пытался определить другой метод для ==, но мне это не удалось.