使用 TeaSpoon 编写规范时直接使用 PhantomJS 访问页面 - Jasmine

Visit pages using PhantomJS directly when writing specs with TeaSpoon - Jasmine

我正在尝试使用 Teaspoon(Jasmine 版本)为我的 Rails 3.2 应用程序编写 Javascript 规范。我正在尝试编写一个规范来做这样的事情

describe("Fun", function() {
    var page = require('webpage').create() //ERROR

    it("should be so much fun", function() {
        page.open('/pageToTest/')
        expect($('#HereIsTheParty')).not.toBe( undefined );
    });
});

但是,require('webpage') 不会 运行(错误:尚未为上下文 加载模块名称 "system" ) 即使 Requirejs gem 已经安装并且可以从 Chrome 控制台访问。

我的问题是,我可以使用 Rails 轻松地将 require('webpage') 转换为 运行 还是我应该使用其他东西?到目前为止我一直在使用 Capybara 可能更容易

describe "Fun", :type => :feature do
    it "should be so much fun" do
        visit '/pageToTest/'
        expect(page).to have_content 'Success'
    end
end

没有任何问题。但是我更喜欢使用 pure Javascript 因为在这种情况下它更方便。你们有什么感想?谢谢!

对于 Teaspoon,规范不在 phantomjs 的上下文中 运行,它们是在浏览器的上下文中加载的,因此无法访问 phantomjs。只有内部 phantomjs 驱动程序(runner.js 在 repo 中)有 phantomjs 的任何概念,它加载一个 html 页面,其中包含你的 javascripts。

听起来您可能正在将 Teaspoon 与 phantomjs 混淆,这并不是实际情况的准确描述。 Teaspoon 仅使用 phantomjs 作为 运行ner 层,并且对待它的方式与 Selenium 或 Capybara Webdriver(两者也受支持)没有区别。所以这个问题类似于询问如何从 javascript 规范中访问 Selenium。