Вас ненавидит объем рельсов имени:когда раскорчевка объекта
Это только я или это глобальное поведение RSpec, когда я называю область действия моей модели rails :public
, инициализирую объект из этой модели и заглушаю этот объект RSpec терпит неудачу
class DocumentName < ActiveRecord::Base
scope :public, lambda{where( public: true) } #line 3
end
Ничего особенного, приложение Rails работает
DocumentName.public # => [ #DN, #DN, #DN... ]
# SELECT `document_names`.* FROM `document_names` WHERE `document_names`.`public` = 1
Однако RSpec терпит неудачу
describe DocumentName do
let(:resource){DocumentName.new}
it do
resource.stub(:name).and_return('foo') #line 16
resource.save.should be true
end
end
Failure/Error: resource.stub(:name).and_return('foo')
ArgumentError:
wrong number of arguments (1 for 0)
# ./app/models/document_name.rb:3:in `block in <class:DocumentName>'
# ./spec/models/document_name_spec.rb:16:in `block (2 levels) in <top (required)>'
...и самое смешное, что я ничего не делаю с таким размахом в этом сценарии.
Однако, если я назову эту область чем-то другим, чем :public
, например: :are_public
:
class DocumentName < ActiveRecord::Base
scope :are_public, lambda{where( public: true) }
end
...все проходит O_O
Rails 3.2.11 (but same thing on any 3.2.x)
Ruby ruby-2.0.0-rc1 ( but same for any ruby-1.9.3)
rspec-core (2.12.2)
rspec-expectations (2.12.1)
rspec-mocks (2.12.1)
rspec-rails (2.12.2)