首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Padrino,为Capybara安装应用程序

Padrino,为Capybara安装应用程序
EN

Stack Overflow用户
提问于 2016-01-26 14:30:28
回答 1查看 220关注 0票数 0

我有一个特性spec: /spec/posts/post_posts_spec.rb:

代码语言:javascript
复制
require 'spec_helper'

describe "Displaying Posts" do
  it "can see posts on posts page" do
    Post.create(title: "Title", content: "Content")
    visit '/posts'
    expect(page).to have_content("Title")
    expect(page).to have_content("Content")
  end
end

当我做测试时,我得到:

代码语言:javascript
复制
WARNING! No apps are mounted. Please, mount apps in `config/apps.rb`

以及一次失败的考试,包括:

代码语言:javascript
复制
NameError:
       uninitialized constant Post

/spec/spec_helper.rb:

代码语言:javascript
复制
require 'rack/test'
require 'rspec/padrino'
require 'capybara/rspec'

Capybara.app = Padrino.application

RSpec.configure do |config|
  config.include Rack::Test::Methods
  config.include RSpec::Padrino
  config.include Capybara::DSL

  config.expect_with :rspec do |expectations|
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end

  config.mock_with :rspec do |mocks|
    mocks.verify_partial_doubles = true
  end
end

/Gemfile:

代码语言:javascript
复制
source 'https://rubygems.org'

# Padrino supports Ruby version 1.9 and later
ruby '2.3.0'

# Project requirements
gem 'rake'

# Component requirements
gem 'bcrypt'
gem 'sass'
gem 'haml'
gem 'activerecord', '>= 3.1', :require => 'active_record'
gem 'sqlite3'

# Test requirements
group :test do
  gem 'shoulda'
  gem 'rack-test', :require => 'rack/test'
  gem 'rspec-padrino'
  gem 'capybara'
end

# Padrino Stable Gem
gem 'padrino', '0.13.1'

/app/app.rb:

代码语言:javascript
复制
module PadrinoBlog
  class App < Padrino::Application
    register SassInitializer
    use ConnectionPoolManagement
    register Padrino::Mailer
    register Padrino::Helpers

    enable :sessions

    get "/" do
      "Hello World!"
    end

    get :about, :map => '/about_us' do
      render :haml, "%p This is a sample blog created to demonstrate how Padrino works!"
    end
  end
end

/config/apps.rb:

代码语言:javascript
复制
Padrino.configure_apps do
  # enable :sessions
  set :session_secret, '67c26da8db30eaf68907e2de05783d33be5e246b87c194f0579bdb589c0761dd'
  set :protection, :except => :path_traversal
  set :protect_from_csrf, true
end

# Mounts the core application for this project

Padrino.mount("PadrinoBlog::Admin", :app_file => Padrino.root('admin/app.rb')).to("/admin")
Padrino.mount('PadrinoBlog::App', :app_file => Padrino.root('app/app.rb')).to('/')

我尝试过各种不同的方法,比如在spec_helper中要求“spec_helper”文件,这就导致不得不在那里要求active_record,这就导致了一个问题,因为它不知道SassInitializer是什么,不知道是什么。

老实说,我真的不知道我在做什么,也不知道每件事是如何整合在一起的,所以任何帮助都是非常感激的。

回购的分支这里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-26 19:03:57

我从未使用过padrino,但似乎您在spec_helper顶部缺少了几行代码,这些行实际上会加载应用程序资源。

代码语言:javascript
复制
RACK_ENV = 'test' unless defined?(RACK_ENV)
require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
Dir[File.expand_path(File.dirname(__FILE__) + "/../app/helpers/**/*.rb")].each(&method(:require))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35016240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档