使用rspec和capybara webkit存根javascript函数

使用rspec和capybara webkit存根javascript函数,javascript,ruby-on-rails,rspec,capybara-webkit,Javascript,Ruby On Rails,Rspec,Capybara Webkit,我试图用rspec和capybarawebkit测试一些JS功能 我需要在客户端登录google <script src="https://apis.google.com/js/client.js"></script> function auth() { var config = { 'client_id': '<%= ENV["GOOGLE_CLIENT_ID"] %>', 'scope': '<%= E

我试图用rspec和capybarawebkit测试一些JS功能

我需要在客户端登录google

<script src="https://apis.google.com/js/client.js"></script>

function auth() {

      var config = {
        'client_id': '<%= ENV["GOOGLE_CLIENT_ID"] %>',
        'scope': '<%= ENV["GOOGLE_APIS_HOST"] %>/auth/contacts.readonly'
      };

      gapi.auth.authorize(config, function() {
        fetch(gapi.auth.getToken());
      });
    }
我看到的第一个问题是没有加载外部JS(这是正确的,因为我希望我的测试被隔离)。当我访问浏览器控制台时,我看到以下消息

{ :line_number=>376, :message=>"ReferenceError: Can't find variable: gapi", :source=>"http://127.0.0.1:59312/users/1" }
你知道我如何测试这个功能吗?我需要它在客户端,因为我没有重定向URL

我想我需要stub
gapi
之类的东西,但我不知道如何从capybara实现它,因为它是一个javascript函数


谢谢你

哇,这是个有趣的问题。你有没有办法在这一边伪造它,比如在本地的饼干里塞进一些东西,然后再打电话给谷歌?
it "signs in with gmail", js: true do
  pool = create :pool
  user = create :user, :in_pool, pool: pool

  sign_in user
  visit pool_path(pool)
  click_on "Sign In"

  expect(page).to have_css "h1", "Welcome"
end
{ :line_number=>376, :message=>"ReferenceError: Can't find variable: gapi", :source=>"http://127.0.0.1:59312/users/1" }