Je suis conscient que expect(assign(:var))
dans les spécifications de contrôleur vérifie que @var
est affecté à une certaine valeur. Dans mon cas, je veux tester si ce @var
reçoit un message spécifique. Si je le fais avant get :action
les affectations renvoie zéro. Si je le fais après, il est trop tard pour attendre le message.RSpec test d'une variable d'instance de contrôleur reçoit un message
# controller
def action
@var = something
@var.message
render :nothing
end
# spec1
expect(assigns(:var)).to receive(:message) # not working, var is nil
get :action
# spec2
get :action
expect(assigns(:var)).to receive(:message) # not working, expectation too late
Essayé en utilisant rspec-mocks mais cela n'a pas fonctionné, ou je ne pouvais pas comprendre comment il devrait être écrit: 'var = spy (assigne (: var), action: 1); get: action, id: 10; expect (var) .to have_received (: action) ' – hammady
Malheureusement,' assigns (: var) 'retournera' nil' s'il est appelé avant le 'get: action' et c'est tout le point dans ma question. Pour cela j'ai essayé 'spy' au lieu de' double 'qui ne fonctionnait pas non plus. – hammady
Peut-être essayer '@ var' au lieu de' assigns (: var) '? –