0

我正在尝试测试一个使用 Javascript 进行 ajax 调用的页面。

我可以看到控制器中的操作被正确调用,并且 200 被发送回 html 页面。但不知何故,在javascript中,触发了错误函数而不是成功函数...... Javascript工作正常,但就像它不等待来自服务器的答案......来自服务器的答案被发送回几毫秒的事。

我没有在 Rails 中使用数据库。

我注释掉了config.use_transactional_fixtures = true

在我的配置中,我添加了以下内容:

Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

Capybara.javascript_driver = :chrome

使用最新的 rails 版本、最新的 Capybara 版本和最新的 rspec 版本...

很难调试问题,因为我不知道幕后到底发生了什么。我认为这与超时问题有关,但我不确定。

顺便说一句,我的 javascript 看起来像这样:

$.ajax({
    type:'POST',
    dataType:'json',
    url:url,
    data:data,
    silent:true,
    loader:$("input#x, input#y").next(".loader"),
    success:function (response) {
        ...
    },
    error:function (jqXHR, textStatus, errorThrown) {
        redirectToLoginPage(jqXHR.status);
    }
});

任何人都可以向我指出一个 rspec 和 capybara 进行 Ajax 调用的示例吗?

4

1 回答 1

1

你需要改变你的:

Capybara.javascript_driver = :chrome

对于可用的驱动程序之一::rack_test, :selenium, :webkit, :webkit_debug

例如:

Capybara.javascript_driver = :selenium
于 2012-12-07T18:56:14.167 回答