سؤال

I'm write some specs to cover my HTML helpers

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

When I run it on local machine all is good, everything pass. But after pushing to GitHub repo Travis fails and write that Object::Sinatra is uninitialized (link) and I haven't idea why.

spec_helper.rb looks:

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
هل كانت مفيدة؟

المحلول 2

I've forgot to add require 'spec_helper' on top of my specfile.

نصائح أخرى

because http://travis-ci.org/#!/orodruin/orodruin/jobs/2248831/L73 isn't using bundle exec.

the "bundle exec rake" line above it didn't seem to do anything.

you will need to prefix that line with bundle exec.

I don't see that line in your code, but it could be hard coded in one of your gems or in the Travis service.

The real problem is that the sinatra gem isn't found when Travis is running the specs. This is because travis is using an RVM gemset, and you are probably using the "global" gemset.

The result is ruby -s rspec ... isn't being ran in the gem bundle environment and isn't loading Sinatra.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top