Webrat Механизировать вне Rails - PullRequest
2 голосов
/ 11 января 2010

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

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)

1 Ответ

2 голосов
/ 11 января 2010

assert_contain и другие утверждения являются методами test / unit, попробуйте потребовать его и использовать 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' для выполнения ваших спецификаций,

...