Comment tester la variable d'instance a été instancié dans le contrôleur avec RSpec
Je suis en train de vérifier qu'une nouvelle action dans mon Reposant contrôleur de définir une variable d'instance de l'Objet type. Semble assez typique, mais avoir de la difficulté à exécuter
Client Contrôleur De
def new
@client = Client.new
end
Test
describe "GET 'new'" do
it "should be successful" do
get 'new'
response.should be_success
end
it "should create a new client" do
get 'new'
assigns(:client).should == Client.new
end
end
Résultats dans...
'ClientsController OBTENIR les "nouveaux" devrait créer un nouveau client' a ÉCHOUÉ prévu: #, ai: # (à l'aide de ==)
Qui est probablement parce que c'est en essayant de comparer les 2 instances de l'enregistrement actif, qui diffèrent. Alors, comment puis-je vérifier que le contrôleur de définir une variable d'instance qui détient une nouvelle instance du modèle Client.
Vous devez vous connecter pour publier un commentaire.
technicalpickles dans #rspec m'a aidé...
expect(assigns(:client).to be_a(Client)
Vous pouvez utiliser les Rails' new_record? méthode pour vérifier si une instance a été enregistré dans la base de données déjà ou pas:
(Vous ne pouvez pas utiliser attribue [client] pour des raisons historiques, en fonction de: http://guides.rubyonrails.org/testing.html#the-four-hashes-of-the-apocalypse)
Pour 2016 RSpec v3 syntaxe à utiliser:
Aussi, pour d'autres qui peuvent s'arrêter ici en raison de la question du titre, voici comment tester si une variable d'instance
@client
a été fixé à quoi que ce soitVoir @Attila Györffy réponse au sujet de pourquoi les ayants droit de hachage doit être accessible avec des clés de chaîne.