2014-08-13 5 views
1

Я боролся с модулем тестирования def self.method. Я нашел отличную нить here with a very helpful answer. Мой код:Тестирование модуля с RSpec 3

module MyModule 
    def self.method 
    groups = Posts.group :name 
    end 
end 

describe Class.new { include MyModule } do 
    its (:method) { should be_a(ActiveRecord::Relation) } 
end 

Проблема заключается в том, что речь идет о включая модуль и не распространяющие его. Как сказал автор ответа, он проверил его с RSpec 2. Я тестировал его с RSpec 3.0.0, и единственное, что сработало, было, когда метод был методом экземпляра. В противном случае я получаю следующее сообщение об ошибке:

undefined method `method' for #<#<Class:0x0000000..>:0x00000006..> 

Как я могу проверить MyModule.method?

ответ

1

Возможно, это запутанный метод экземпляра и класса. Попробуйте это, чтобы убедиться, что это действительно тестирование по методу класса уровня

class MyClass 
    include MyModule 
end 
it "should have an active relation on method" do 
    expect(MyClass.method).to be_a(ActiveRecord::Relation) 
end 
+0

С этой точной настройкой я получаю эту ошибку 'неопределенного метода«метода»для DummyClass: Class': -/ – valk

+0

справа, так что ваш include не делает то, что вы думаете, что это делает ... что означает, что, возможно, 'include' не то, что вы хотите. –

+0

Вы правы. Я поддерживаю это, спасибо. Я думаю, что мой вопрос запутан. Но как бы вы протестировали собственный метод модуля? – valk

Смежные вопросы