Escolha sabiamente suas datas para especificações

O que há de errado com essa especificação?

profile.set_start_date('01/02/2012')
expect
(profile.start_date).to eq(Date.parse('01/02/2012')

Bem, provavelmente algumas coisas, mas para simplificar, vamos supor que você esteja usando esse Date.parsemétodo em seu código de produção que define a data de início e que você está apenas testando se algum processo define a data certa. Bem, o problema é que, como você usa esse método tanto no teste quanto na especificação, você tem certeza de que está sendo definido, mas pode ser definido com um mês de atraso sem que você perceba. Isso deve ser um pouco melhor:

expect(profile.start_date.month).to eq(1) #=> fails: expected 1, got 2

Então, eu sugeriria usar algo que seria uma data inválida se o analisador não fizer o que você espera no início, de forma que você detecte erros sutis como este muito antes.

profile.set_start_date = '01/31/2012' #=> internal code throws invalid date error
expect
(profile.start_date.month).to eq(1)

Obrigado por ler!