1
Я хочу использовать вокруг крюка для запуска моих спецификаций с временным каталогом и временным восстановлением каталога.Как передать контекст в пример из крючка вокруг
describe FileManipulatingClass do
around(:each) do |example|
Dir.mktmpdir do |dir|
example.run
end
end
subject { described_class.new dir }
context "given its help file exists" do
let(:file_path) { File.join dir "help.txt"}
before(:each) do
File.open(file_path, 'w') {|io| io.write "some data" }
end
its(:help_text) { should eq("some data") }
end
end
Это не будет работать, потому что «dir» не установлен для контекста. Как я могу сделать эквивалент
let(:dir) { ... }
и указать значение, которое становится доступным только в крючке вокруг?
Спасибо, Питер. Это работает, если вы включите let в ту же область, что и вокруг блока. Это хорошо для моих целей. Таким образом, вышесказанное не работает, но вы можете легко исправить его, добавив еще один let (: dir) {@dir} перед строкой темы. – Ritchie
Я согласен, что вы можете использовать 'let' как в предложенном вами редактировании (и это будет лучший стиль), но я считаю, что приведенный выше пример работает так, как есть. Вы заметили, что я изменил 'dir' на' @ dir' в блоках, переданных как на тему, так и на 'let'? –
Я, наконец, добрался до этого. Да, ты прав. Вы можете использовать переменную экземпляра в других областях напрямую. – Ritchie