More on Bogus: Stubbing out todas as instâncias de uma classe

Eu continuo trabalhando com Bogus e descobrindo como fazer coisas que eu acho que deveriam ser fáceis, mas que Bogus não deixa muito claro. Espero que esta postagem do blog ajude aqueles que estão igualmente confusos.

Hoje precisei testar um controlador. O método do controlador é totalmente estúpido.

def create
account
= Account.new(params)
if account.valid?
render nothing
: true
else
head
:bad_request
end
end

A abordagem normal do Bogus depende muito da injeção de dependência, que não funciona para testes de controlador. Não consigo criar a instância de Account fora do controlador e passá-la para o método de criação. Então eu tive que configurar o Bogus para que ele fizesse um stub em todas as instâncias de Account.

describe AccountsController do
describe
"Creation" do
fake
(:account)

it
"gives a bad request if the accout details are invalid " do
stub
(account).valid? {false}
stub
(Account).new(any_args) { account }
...
end
end
end

Não vejo isso documentado no próprio Bogus, mas encontrei a dica de que precisava ao olhar para este problema