У меня есть две спецификации, которые при индивидуальном запуске выполняются нормально, но когда я выполняю их с помощью «rspec spec», последний терпит неудачу.ожидает() спецификации, видимой снаружи других спецификаций при запуске «rspec spec»
Первое:
describe "DB Archival" do
it "should archive the nodes which are deleted" do
node_data_archival = mock()
NodeDataArchival.expects(:new).with('node1').returns(node_data_archival)
node_data_archival.expects(:export_to_csv).with([1,2])
db_archival.archive_deleted_nodes
end
end
Второе:
describe "Export to CSV" do
it "should export data to a csv file" do
class School < ActiveRecord::Base
end
School.expects(:column_names).returns(["id", "name"])
node_data_archival = NodeDataArchival.new("school")
node_data_archival.export_to_csv(rows, filename)
end
end
Второй подбрасывает с:
$ rspec spec
.......F......
Failures:
1) Export to CSV should export data to a csv file
Failure/Error: node_data_archival1 = NodeDataArchival.new("school")
Mocha::ExpectationError:
unexpected invocation: NodeDataArchival.new('school')
unsatisfied expectations:
- expected exactly once, not yet invoked: School(Table doesn't exist).column_names(any_parameters)
satisfied expectations:
- expected exactly once, invoked once: NodeDataArchival.new('node1')
- expected exactly once, invoked once: #<RSpec::Mocks::Mock:0x7ff4693d3028>.export_to_csv([1, 2])
# ./spec/entity_traversal/node_data_archival_spec.rb:16:in `block (2 levels) in <top (required)>'
Мой вопрос - 1) почему она пытается найти математическое ожидание вместо создания фактического экземпляра NodeDataArchival во второй спецификации? 2) почему вторая спецификация может найти ожидаемые(), объявленные первой спецификацией?
PS: Проблема происходит только тогда, когда я запускаю все спецификации вместе с помощью «rspec spec», и оба спецификаций работают отлично.
РЕДАКТИРОВАТЬ: Версии, используемые: рубин-1.9.3-P125, RSpec (2.13.0) и мокко (0.14.0)
EDIT: Использование Rspec-рельсы-мокко (0.3.2) вместо мокко (0.14.0) решил проблему.
Ожидания не должны «протекать», но можете ли вы поделиться своими полными спецификациями? Кроме того, являются ли они единственными двумя спецификациями в вашей спецификации/каталоге (т. Е. Являются ли эти два только спецификаций выполняемыми при выполнении 'rspec spec')? –
@PeterAlfvin да, в основном только запуск этих двух спецификаций дает ошибку. Я упомянул оба здесь [link] http://pastebin.com/jZ50Fnd6. Кроме того, я разрешил его, используя should_receive в первой спецификации, выглядит как проблема с expects() – prat0318
Вы объединили два файла и вставляете их как один? Я прошу, потому что там был только один 'require 'spec_helper''. –