【问题标题】:PhantomJS "Can't find variable: require" when using PhantomJasmine使用 PhantomJasmine 时 PhantomJS “找不到变量:需要”
【发布时间】:2012-08-09 21:09:14
【问题描述】:

我想使用 Phantomjs 和 Jasmine 对 javascript 进行单元测试。 Phantomjs 的网站建议我使用单独的东西来处理这个问题,特别是 PhantomJasmine。我下载了 PhantomJasmine 并运行了这个例子。一切都很顺利。然后我将var system = require('system'); 行添加到example_spec.js 的顶部。当我尝试运行我得到“ReferenceError:找不到变量:需要”的示例时,Phantomjs 现在会引发错误。所以,我想做一些事情,比如启动浏览器,但看起来我不能结合 jasmine 和 phantomjs 语法。我只能使用 Phantomjs 运行纯 jasmin。如何在同一个文件中同时使用两者?喜欢:

console.log('Loading a web page');
var page = new WebPage();
var url = "http://www.phantomjs.org/";
page.open(url, function (status) {
    //Page is loaded!
    describe("A suite", function() {
      it("contains spec with an expectation", function() {
        expect(true).toBe(true);
      });
    });
    phantom.exit();
});

【问题讨论】:

    标签: jasmine phantomjs


    【解决方案1】:

    这不是你应该如何使用它。控制 phantomjs 的代码不应与 jasmine 规范混淆,反之亦然。

    您应该将您的规范分成 .js 文件,并使用 HTML 规范运行程序创建标准 jasmine 设置,该运行程序加载规范 .js 文件并在 phantomjs 中打开该 HTML 文件。

    另一种解决方案是使用带有 phantomjs 和 jasmine 的 grunt 来自动运行 jasmine 规范。

    https://github.com/cowboy/grunt
    https://github.com/creynders/grunt-jasmine-task

    【讨论】:

    • 我的文件已分开。我犯了同样的错误。 html文件中我的head标签里面的内容是: 其中 execPage.js 包含纯 phantomjs 代码,而 jaztest1 包含纯 jasmine 代码。我还研究了 Grunt。另一个是用 phantom js 运行 Jasmine。我需要知道如何相互运行 Jasmine 和 Phantomjs 脚本。即:导航到页面,执行 jasmine。
    • 我想我的问题已经解决了。这是场景:我有一些 jasmine 测试的 tests.js。我想导航到 google.com,并检查以确保显示搜索栏。 google.com 没有任何茉莉花包含。我该怎么做?
    • 在html页面调用jasmine脚本,不通过PhantomJS。基本上,当您想手动运行 jasmine 测试时,您完全可以设置它,然后只需将该 HTML 页面的 URL 传递给 PhantomJS 以在命令行中运行它。
    • 谢谢!我按照你所说的做了(但在我阅读你的回复之前)。现在我只需要让 waitfor() 正常工作。
    • 我不确定我是否理解该修复程序。如果您有一个加载测试规范的规范运行器 html,并且您希望其中一个测试加载一个谷歌页面,我该如何将谷歌 URL 传递给 jasmine 以打开?
    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2018-04-11
    • 2015-05-26
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多