0

HTMLヘルパーをカバーするためにいくつかの仕様を書いています

describe Sinatra::Helpers::HTML do
  describe 'tag' do
    it 'should retun selfclosed tag' do
      Helpers.tag(:br, {}, true).should == '<br />'
    end

    it 'should have valid attributes' do
      Helpers.tag(:div, :class => 'test').should include("class='test'")
    end

    it 'should contain value returned from block' do
      tag = Helpers.tag(:div) { 'Block value' }
      tag.should include('Block value')
    end
  end

  describe 'stylesheet_tag' do
    it 'should return link tag' do
      Helpers.stylesheet_tag('test').should include('link')
    end

    it 'should contain path to asset' do

    end
  end
end

ローカルマシンで実行すると、すべてがうまくいき、すべてが合格します。しかし、GitHubリポジトリにプッシュした後、Travisは失敗し、初期化されていない書き込みObject::Sinatraリンク)が発生し、理由がわかりません。

spec_helper.rb見える:

ENV['RACK_ENV'] = "test"

require 'simplecov'
SimpleCov.start
require File.join(File.dirname(__FILE__), '..', 'boot')

require 'rspec'
require 'capybara/rspec'
require 'rack/test'
require 'factory_girl'

FactoryGirl.find_definitions

Capybara.app = Orodruin.rack

RSpec.configure do |config|
  config.include Rack::Test::Methods

  config.after(:each) do
    MongoMapper.database.collections.each do |collection|
      collection.remove unless collection.name.match(/^system\./)
    end
  end
end

class Helpers
  extend(*Sinatra::Base.included_modules.map(&:to_s).grep(/Helpers/).map(&:constantize))
end
4

2 に答える 2

1

http://travis-ci.org/#!/orodruin/orodruin/jobs/2248831/L73はbundleexecを使用していないためです。

その上の「bundleexecrake」行は何もしていないようです。

その行の前にbundleexecを付ける必要があります。

コードにその行は表示されませんが、gemの1つまたはTravisサービスにハードコードされている可能性があります。

本当の問題は、Travisがスペックを実行しているときにsinatragemが見つからないことです。これは、travisがRVMジェムセットを使用しており、おそらく「グローバル」ジェムセットを使用しているためです。

結果はruby -s rspec ...gemバンドル環境で実行されておらず、Sinatraをロードしていません。

于 2012-08-27T11:21:12.450 に答える
1

require 'spec_helper'specfile の上に追加するのを忘れていました。

于 2012-09-16T13:06:35.407 に答える