3

我正在尝试使用 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 );
    });
});

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

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

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

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

4

1 回答 1

0

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

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

于 2015-03-11T16:40:01.287 回答