Tôi đang gặp phải một khoảng thời gian rất khó khăn để giải quyết vấn đề này, vì vậy mọi trợ giúp sẽ được đánh giá cao.Gỡ lỗi jQuery Ajax trong Dưa chuột + Capybara + PhantomJS trong Rails
Tất cả những gì tôi muốn làm là thử nghiệm một mẫu đăng ký dựa trên Ajax đơn giản trên dự án của tôi. Nếu việc gửi biểu mẫu thành công, bạn sẽ được chuyển hướng đến trang chào mừng. Nếu không, bạn sẽ nhận được các lỗi xác thực thích hợp được liên kết với từng trường vi phạm.
Vì một số lý do kỳ lạ, Capybara không tuân thủ chuyển hướng. Cuộc gọi Ajax đang được thực hiện và tôi thấy một tài khoản mới được đăng ký trong cơ sở dữ liệu, nhưng cuộc gọi lại onSuccess
không được gọi hoặc chuyển hướng bị bỏ qua.
Dưới đây là những gì tôi đang cố gắng để làm việc với (vì lợi ích ngắn gọn, tôi đã ngưng tụ mã):
Tính năng:
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.')
})
Được rồi, vì vậy, thử nghiệm cụ thể này chỉ chạy tốt cho đến khi chúng tôi chuyển hướng người dùng đến màn hình chào mừng. Tôi đã thử tất cả mọi thứ tôi có thể có thể để xem những gì đang xảy ra bên trong các cuộc gọi lại onSuccess
, onFailure
, nhưng không có kết quả. Nó giống như mã không được thực thi.
tôi chỉ nhận được đầu ra sau từ chạy thử:
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'
Nó không quan trọng nếu tôi nâng một ngoại lệ, nó không được nhặt. Không thực hiện cuộc gọi đến console.log()
trong các cuộc gọi lại.
Có ai nhìn thấy điều này không? Nếu vậy, có cách giải quyết nào không? Nếu bạn cần thêm thông tin, xin vui lòng chỉ cần hỏi, tôi sẽ rất sẵn lòng cung cấp.