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没有使用 bundle exec。

它上面的“bundle exec rake”行似乎没有做任何事情。

您需要在该行前面加上 bundle exec。

我在您的代码中看不到该行,但它可能在您的一个 gem 或 Travis 服务中硬编码。

真正的问题是当 Travis 运行规范时找不到 sinatra gem。这是因为 travis 正在使用 RVM gemset,而您可能正在使用“全局”gemset。

结果是ruby -s rspec ...没有在 gem bundle 环境中运行,也没有加载 Sinatra。

于 2012-08-27T11:21:12.450 回答
1

我忘了require 'spec_helper'在我的规范文件上添加。

于 2012-09-16T13:06:35.407 回答