2013-10-08 5 views
0

Я был бы признателен за помощь в сортировке ошибку в следующем коде:Зачем возникает ошибка в следующем коде?

require 'rubygems' 
require 'watir' 
require 'watir-webdriver' 
require 'test/unit' 

class TestGoogle < Test::Unit::TestCase  
    def setup 
    @browser = Watir::Browser.new :firefox 
    end 

    def testSignInLink 
    @browser.goto "http://google.com/" 
    po = PageObjects.new(@browser) 
    po.clickLinkSignIn 
    end 
end 

class PageObjects 
    def initialize(browser) 
    @browser = browser 
    end 

    def clickLinkSignIn() 
    @browser.link(:id, "gb_70").click 
    end 
end 

tg = TestGoogle.new 
tg.setup 
tg.testSignInLink 

Ошибка является:

Uncaught exception: wrong number of arguments (0 for 1) 
C:/Ruby193/lib/ruby/1.9.1/minitest/unit.rb:971:in `initialize' 
C:/RubymineProjects/ditto/Google_01_TU_02.rb:28:in `new' 
C:/RubymineProjects/ditto/Google_01_TU_02.rb:28:in `<top (required)>' 

Линия 28:

tg = TestGoogle.new 

Как ни странно, Затем сценарий завершается с представленной страницей входа google.

Обратите внимание, что утверждений нет - я делаю это за один маленький шаг за раз.

Добавлено после редактирования:

Инициализатором в C: /Ruby193/lib/ruby/1.9.1/minitest/unit.rb: 971

def initialize name # :nodoc: 
    @__name__ = name 
    @__io__ = nil 
    @passed = nil 
    end 
+0

Есть ли тест :: Unit :: TestCase требует, чтобы вы реализовали верхний метод в классе TestGoogle? IOW, это виртуальный в базовом классе? – KevinDTimm

+0

'TestGoogle' просто наследует' initialize' из 'Test :: Unit :: TestCase'. Требуется ли для инициализатора 'Test :: Unit :: TestCase' параметр? Несмотря на то, что он, похоже, работает, в классе тестов есть что-то, что не работает, что вы, возможно, просто не используете на данный момент. – lurker

+0

@mbratch: Вот код для инициализатора, что почти ничего не значит для меня: – OldGrantonian

ответ

0

Я думаю, что весь этот вопрос был несправедливо все хорошие комментаторы.

Причина: В качестве эксперимента, я закомментирована последние 3 строки кода:

tg = TestGoogle.new 
tg.setup 
tg.testSignInLink 

Тест побежал отлично.

Ранее я предполагал, что мне нужно было как-то «начать» методы в классе TestGoogle. Подобно программе «Главная», которая в свою очередь вызывает все методы.

Возможно, это то, о чем говорил @justinko? Итак, класс TestGoogle является тестовым бегуном?

Я думаю, что мне нужно извиниться перед комментаторами.

+1

Да, это то, о чем я говорил. Когда вам потребуется «тест/единица», все ваши тестовые примеры (т.е. дети Test :: Unit :: TestCase) будут запущены. –