Я пытаюсь создать объект в классе Produto со значением по умолчанию "Geral", когда нет входных данных для переменной категории, но у меня возникли проблемы с пониманием, что не так с этой задачей, я я искал более углубленный класс об объектно-ориентированном, но не получил ни малейшего представления о том, что я должен изменить, чтобы он работал, мне очень жаль, если это глупый вопрос.
categoria.rb
require 'produto'
class Categoria
attr_accessor :nome
def initialize(nome: 'Geral')
@nome = nome
end
end
class Produto
attr_accessor :nome, :categoria, :preco, :estoque
def initialize(nome: 'Sem nome', categoria: categoria , preco: '0', estoque: '0')
@nome = nome
@preco = preco
@categoria = categoria
@estoque = estoque
end
def adiciona_estoque(quantidade)
@estoque += quantidade
end
def remove_estoque(quantidade)
@estoque -= quantidade
end
end
spec.rb
it "deveria criar um objeto de categoria Geral por padrão" do
nome = 'Teclado'
preco = 100
estoque = 3
produto = Produto.new(nome: nome, preco: preco, estoque: estoque)
expect(produto.nome).to eq 'Teclado'
expect(produto.categoria.nome).to eq 'Geral'
expect(produto.preco).to eq 100
expect(produto.estoque).to eq 3
end
rspe c output
Produto deveria criar um objeto de categoria Geral por padrão
Failure/Error: expect(produto.categoria.nome).to eq 'Geral'
NoMethodError:
undefined method `nome' for nil:NilClass
# ./spec/1_produto_spec.rb:25:in `block (2 levels) in <top (required)>'