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

时间:2015-03-10 15:52:54

标签: javascript ruby-on-rails phantomjs specs teaspoon

我正在尝试使用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('网页'),还是应该使用其他东西?到目前为止,我一直在使用

,可能更容易使用Capybara
describe "Fun", :type => :feature do
    it "should be so much fun" do
        visit '/pageToTest/'
        expect(page).to have_content 'Success'
    end
end

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

1 个答案:

答案 0 :(得分:0)

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

听起来你可能正在用幻影卷曲Teaspoon,这并不能说明实际发生的事情。 Teaspoon仅使用phantomjs作为跑步者层,并且与Selenium或Capybara Webdriver(两者也支持)的处理方式没有区别。所以问题类似于询问如何从您的javascript规范中访问Selenium。