나는 기본적인 형태의 테스트 카피 바라를 사용하고 있습니다 - 사용자가 내용을 입력하고 제출 때 새로운 User
기록카피 바라 웹킷은 신속하게 양식을 제출하지 않는 것
it "creates a new user" do
visit some_random_path
# Fill In Form
fill_in("name", with: "foo bar")
fill_in("email", with: "[email protected]")
expect do
click_button("Submit")
end.to change { User.count }.by(1)
end
expect
를 만들어야을 이 1 씩 User.count
증가가 표시되지 않기 때문에 내가
click_button("Submit") && sleep(0.1)
같은 것을 할 경우는 잘 작동 것으로 나타났습니다 그러나 블록에서 오류가 발생합니다!
RSpec이 도 즉각인지 확인하려고합니다. 즉, Capybara가 실행되는 브라우저가 실제로 양식을 제출하고 결과를 DB에 위임하기 전에 확인해야합니다.
자바 스크립트를 사용하지 않고 있습니다. 일반 나이가 :webkit
입니다.
왜 이런 일이 벌어지고 있는지에 대한 생각이 있으십니까?
아래는 내 카피 바라 환경 설정입니다. 나는 멀티 호스트 응용 프로그램을 가지고있다. (나는 무엇이든지간에 apartment gem을 사용하고있다.) 그래서 나는 아래에 언급 된 것처럼 응용 호스트로서 localhost
과 lvh.me
을 사용한다. 그러나 나는 위의 것을 방해 할 것이라고 상상할 수 없다.
Capybara.configure do |config|
config.ignore_hidden_elements = true
Capybara.default_driver = :webkit
config.javascript_driver = :webkit
end
Capybara::Webkit.configure do |config|
config.block_unknown_urls
config.allow_url("lvh.me")
end
RSpec.configure do |config|
config.before(:suite) do
Capybara.always_include_port = true
# The default is to treat each spec as single tennat, in which case
# we want to hit localhost. Hitting the Capbyara default of www.example.com
# causes the apartment setup to try and parse the `www` as a subdomain
Capybara.app_host = "http://localhost"
end
config.before(:each, multi_tenant: true) do
# For multi-tenant specs, use "lvh.me"
Capybara.app_host = "http://lvh.me"
end
end
고마워요!
수정 사항이 훌륭했습니다. 필자는'expect (current_path) .to eq (current_path)'를 일종의 해킹으로 사용하여'current_path'가 사용 가능할 때까지 기다리게했습니다. 또한 개인 메모에서 Capybara에 대한 꾸준한 지원에 감사드립니다. 이것은 매우 유용한 도구이며 유지 보수에 많은 시간과 노력이 필요하다는 것을 잘 알고 있습니다. – user2490003
@ user2490003 흠 -'expect (current_path) .to eq (current_path)'가 실제로 무엇을하는지 확신 할 수 없다. 'expect (page) .to_current_path (expected_path)'가 훨씬 더 좋을 것이라고 기대하는 경로를 알고 있다면 ('current_path' /'current_url'과 함께'eq' matcher를 사용하는 것은 결코 좋은 생각이 아닙니다) –