Ich habe eine sehr schwierige Zeit, meinen Kopf um dieses Problem zu wickeln, so dass jede Hilfe sehr geschätzt wird.Debugging von jQuery Ajax in Gurke + Capybara + PhantomJS in Rails
Alles, was ich tun möchte, ist ein einfaches Ajax-basiertes Registrierungsformular auf meinem Projekt zu testen. Wenn die Formularübermittlung erfolgreich ist, werden Sie auf eine Begrüßungsseite weitergeleitet. Wenn dies nicht der Fall ist, erhalten Sie die entsprechenden Validierungsfehler für jedes beanstandete Feld.
Aus irgendeinem Grund folgt Capybara nicht der Weiterleitung. Der Ajax-Anruf wird ausgeführt, und ich sehe ein neues Konto in der Datenbank registriert, aber der Rückruf onSuccess
wird entweder überhaupt nicht aufgerufen oder die Weiterleitung wird ignoriert. Hier
ist das, was ich versuche, mit zu arbeiten (der Kürze halber habe ich den Code kondensiert):
Eigenschaft:
Feature: Registration
In order to obtain a new account
As a prospective customer
I must submit a valid registration form.
@javascript
Scenario: A valid registration attempt
Given an account registration form
When I complete the form with valid values
Then I should be redirected to the welcome screen
Test:
Given(/^an account registration form$/) do
visit("/signup")
assert current_path == "/signup"
end
When(/^I complete the form with valid values$/) do
within("#signupForm") do
fill_in("email", :with => Faker::Internet.email)
fill_in("name", :with => Faker::Name.name)
fill_in("password", :with => "11111111")
click_link("signupFormSubmit")
end
end
Then(/^I should be redirected to the welcome screen$/) do
assert current_path == "/welcome"
end
JavaScript:
console.log('I am not yet inside you.')
$.post(url, form.serialize(), function(response) {
// everything went well
// let's redirect them to the given page
window.location.replace(response.redirectUrl)
console.log('I am inside you and it is good.')
}, function(response) {
// collect error responses from API
// apply error hints to associated fields
console.log('I am inside you and something went wrong.')
})
In Ordnung, so läuft dieser spezielle Test gut bis wir zu dem Punkt kommen, wo wir den Benutzer auf den Begrüßungsbildschirm umleiten sollen. Ich habe versucht alles, was ich kann, um zu sehen, was in den onSuccess
, onFailure
Callbacks passiert, aber ohne Erfolg. Es ist so, als würde der Code nicht einmal ausgeführt.
bekomme ich nur die folgende Ausgabe aus dem Testlauf:
Then I should be redirected to the welcome screen # features/step_definitions/registration.rb:51
Failed assertion, no message given. (MiniTest::Assertion)
./features/step_definitions/registration.rb:52:in `/^I should be redirected to the welcome screen$/'
features/registration.feature:15:in `Then I should be redirected to the welcome screen'
Es spielt keine Rolle, ob ich eine Ausnahme auslösen, es aufsteht nicht abgeholt. Auch die Aufrufe an console.log()
innerhalb der Rückrufe nicht.
Hat jemand das gesehen? Wenn ja, gibt es einen Workaround? Wenn Sie mehr Informationen benötigen, bitte nur fragen, ich werde mehr als glücklich sein, zur Verfügung zu stellen.