JQuery DataTables 插件没有为我的 Capybara 集成测试加载,使用 Poltergeist 作为我的 JS 驱动程序。
最初,我的测试应该单击DataTables标题对表进行排序,但是当这不起作用时,我更改了测试以查看DataTables是否根本没有加载。其实不然。
测试日志中没有错误,并且可以正常工作手动浏览器测试(也没有JS控制台错误(。所有宝石都是最新的。
该驱动程序使用 JQuery/JS 与应用程序的其他区域配合使用。只是这个特定的插件不会加载。
集成测试
class ClientFlowsTest < ActionDispatch::IntegrationTest
setup :use_js_driver
setup do
@user = User.create(email: "ben@lawtons.com", password: "isthisgood?", password_confirmation: "isthisgood?")
#create 10 clients for the user (pagination limit is 9)
for i in 1..10
@user.clients.create(name: "Happy client #{i}")
end
sign_in @user
end
test "sort list of clients" do
visit clients_path
click_link "sidebar-client-index"
# should be present even without DataTables
assert page.has_css? "#client-table"
# should only be present if DataTables has loaded
assert page.has_css? "#client-table_wrapper"
end
end
控制台输出
rake test test/integration/client_flows_test.rb
Run options: --seed 10558
# Running:
Fontconfig warning: ignoring C.UTF-8: not a valid language tag
F
Finished in 3.320688s, 0.3011 runs/s, 0.6023 assertions/s.
1) Failure:
ClientFlowsTest#test_sort_list_of_clients [/home/ubuntu/workspace/test/integration/client_flows_test.rb:23]:
Expected false to be truthy.
1 runs, 2 assertions, 1 failures, 0 errors, 0 skips
Poltergeist依赖于PhantomJS,最新版本(开发已经停止,所以可能是最后一个版本(,其中最多只支持ES5。 如果你的代码使用任何 ES5.1+ 功能,它将无法工作,如果你使用let
、const
等,它可能会静默失败。 目前,通过硒切换到无头铬测试会好得多。
Poltergeist目前正在重写为使用Puppeteer而不是PhantomJS,所以希望这些限制很快就会消失。