Um fixture pode ser alterado dinamicamente entre métodos de teste no CakePHP?
-
09-06-2019 - |
Pergunta
É possível alterar o acessório entre os métodos de teste?Se sim, como posso fazer isso?
Minha sintaxe para este problema:
No framework cakephp estou construindo testes para um comportamento que é configurado adicionando campos à tabela.Isso pretende funcionar da mesma maneira que a adição dos campos "criados" e "modificados" acelerará automaticamente esses campos em salvamento.
Para testar isso eu poderia crie dezenas de combinações de equipamentos/modelos para testar as diferentes configurações, mas seria cem vezes melhor, mais rápido e mais fácil apenas fazer com que o equipamento mudasse de "forma" entre os métodos de teste.
Se você não está familiarizado com o Estrutura CakePHP, talvez você ainda possa me ajudar enquanto usa Teste Simples
Editar:pergunta reformulada para ser mais geral
Solução
Não estou familiarizado especificamente com o CakePHP, mas esse tipo de coisa parece acontecer em qualquer lugar com fixtures.
Não há pelo menos uma maneira embutida no rails para que isso aconteça, e imagino que não no cakePHP ou em qualquer outro lugar, porque toda a ideia de um fixture é que ele seja fixo
Existem duas soluções alternativas 'decentes' que conheço
Escreva um
changefixture
método, e pouco antes de fazer suas afirmações/etc, execute-o com os parâmetros do que alterar.Deve ir e atualizar o banco de dados ou o que precisa ser feito.Não use fixtures e use algum tipo de fábrica de objetos ou gerador de objetos para criar seus objetos a cada vez
Outras dicas
Esta não é uma resposta à minha pergunta, mas uma solução para o meu exemplo de problema.
Em vez de usar vários fixtures ou alterar os fixtures, edito os arrays Model::_schema removendo os campos sem os quais eu queria testar.Isso faz com que o modelo atue como se os campos não existissem, mas não tenho certeza se este é um teste 100%.Não creio que seja para todos os casos, mas funciona para o meu exemplo.