Aruba를 사용하여 여러 명령 줄 응용 프로그램을 테스트하는 Bundler를 통해 실행되는 RSpec 제품군이 있습니다. 그것은 잘 작동합니다 ... 테스트중인 명령 자체가 Bundler를 사용하여 Ruby로 작성되지 않은 한. 하지만 RSpec suite의 bundler config가 Bundler를 사용하는 명령의 실행을 방해하지 못하게하는 방법을 알아낼 수는 없습니다. 적어도 극단적 인 조치는 필요하지 않습니다.Aruba 및 Bundler로 Ruby 기반 CLI 테스트
unset_bundler_env_vars
및 with_clean_env
의 다양한 순열을 사용해 보았습니다. 여기에 내가 일 것이라고 생각하는 기술의 예
with_clean_env
없이
unset_bundler_env_vars
을 시도
describe 'my ruby app' do
before :each { unset_bundler_env_vars }
it 'should work' do
Bundler.with_clean_env { run_simple ruby_command_name }
end
end
, 그 반대는 경우에 서로 방해. 주사위가 없다.
나는 그것이 작동 왔 유일한 방법은 다음과 같이 수동으로 환경 아루바의 사본을 마사지하는 것입니다
는before :all do
aruba.environment.tap do |env|
if env.include? 'BUNDLE_ORIG_PATH' then
env['PATH'] = env['BUNDLE_ORIG_PATH']
%w(BUNDLE_BIN_PATH BUNDLE_GEMFILE BUNDLE_ORIG_PATH GEM_HOME RBENV_DIR
RBENV_HOOK_PATH RUBYLIB RUBYOPT).each do |key|
env.delete key
end
end
end
end
더 나은 방법이 있어야합니다. 테스트 스위트 나 테스트중인 명령 모두는 다른 언어가 쓰여진 언어를 알고 있거나 신경 쓰지 않아야합니다. 그리고 Aruba와 Bundler를 사용하는 테스트 코드는 프로세스 환경에 미치는 영향에 대한 세부 정보를 알 필요가 없습니다.
그래서 내가 뭘 잘못하고 있니? 어떻게해야합니까?
가드 안에 테스트 파일이있는 테스트 도구가 실행 중입니다. 차라리 짜증나는 솔루션을 얻길 바랍니다! – jedifans