2010-01-11 2 views
2

Я пытаюсь использовать Webrat в автономном скрипте для автоматизации просмотра некоторых веб-страниц. Как заставить метод assert_contain работать?Webrat Механизируйте за пределами Rails

require 'rubygems' 
require 'webrat' 

include Webrat::Methods 
include Webrat::Matchers 

Webrat.configure do |config| 
    config.mode = :mechanize 
end 

visit 'http://gmail.com' 
assert_contain 'Welcome to Gmail' 

Я получаю эту ошибку

/usr/lib/ruby/gems/1.8/gems/webrat-0.6.0/lib/webrat/core/matchers/have_content.rb:57:in 'assert_contain': undefined method assert' for #<Object:0xb7e01958> (NoMethodError)

ответ

2

assert_contain и другие утверждения являются методы тестирования/блока, попытайтесь требовать и использовать Webrat внутри метода испытаний:

require 'test/unit' 

class TC_MyTest < Test::Unit::TestCase 
    def test_fail 
    assert(false, 'Assertion was false.') 
    end 
end 

в любом случае я не тестировал его, но у меня есть рабочий spec_helper для rspec, если это вас может заинтересовать:

require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) 
require 'spec/rails' 

require "webrat" 

Webrat.configure do |config| 
    config.mode = :rails 
end 

module Spec::Rails::Example 
    class IntegrationExampleGroup < ActionController::IntegrationTest 

    def initialize(defined_description, options={}, &implementation) 
    defined_description.instance_eval do 
     def to_s 
     self 
     end 
    end 

    super(defined_description) 
    end 

    Spec::Example::ExampleGroupFactory.register(:integration, self) 
    end 
end 

плюс спецификации:

# remember to require the spec helper 

describe "Your Context" do 

    it "should GET /url" do 
    visit "/url" 
    body.should =~ /some text/ 
    end 

end 

дать ему попробовать, я нашел, что это очень полезно (больше, чем огурцов и других овощей по всему), когда нет необходимости в текст функции (функции) вместо кода спецификации, которые мне нравятся больше всего.

ps вам нужен rspec gem, и он устанавливает команду «spec» для выполнения ваших спецификаций.