Sempre que estou testando, gosto de usar variáveis aleatórias que posso inspecionar posteriormente para confirmar uma operação sem o risco de variáveis mágicas mascararem falhas. Neste exemplo simples
name = "Bill"
account = Account.new(name: name)
account.name.should eq(name)
Eu substituiria “Bill” da seguinte maneira
name = random_string
account = Account.new(name: name)
account.name.should eq(name)
Essa abordagem me permite ter mais certeza de que estou testando o comportamento em vez da configuração dos acessórios.
Para simplificar isso, criei vários métodos auxiliares que incluo em meus conjuntos de testes. O random_string
método seria mais ou menos assim
def random_string
(0...24).map{ ('a'..'z').to_a[rand(26)] }.join
end
Eu compartilhei uma série deles aqui