使用量角器spyOn()为jQuery ajax()导致错误“ajax()方法不存在”

时间:2014-08-26 09:57:38

标签: javascript jquery jasmine protractor

我试图测试ajax用于表单提交。测试的量程器代码是:

describe('login.php', function() {

it("should use ajax on submit", function() {
  browser.get('/login.php');
  spyOn($, "ajax");
  $("form#frmLogin [type='submit']").click();
  expect($.ajax).toHaveBeenCalled();
});
});

它失败并显示消息:

Error: ajax() method does not exist

有什么问题?

其他测试进展顺利。它是Windows PC。量角器conf:

exports.config = {
  allScriptsTimeout: 11000,

  specs: [
    'e2e/*.js',
  ],

  capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
        args: ['--test-type']
    }
  },

  chromeOnly: true,

  baseUrl: 'http://mysite.local/',

  framework: 'jasmine',

  jasmineNodeOpts: {
    defaultTimeoutInterval: 30000
  }
};

我的环境有问题吗?

1 个答案:

答案 0 :(得分:2)

你不能监视jQuery,因为它是在浏览器中定义的,而不是在量角器测试中定义的。您的量角器测试是在浏览器外部运行的节点进程。它使用webdriver协议与浏览器进行通信。

我建议你为这种情况在业力中写一个单元测试。