Minitest에서 공백으로 단일 테스트 실행
--name
플래그에 전달할 수 있습니다.def test_controller_name
# assert ...
end
> ruby -I test test/controller/renderer_test.rb --name test_controller_name
그러나 Rails는 테스트 이름과 블록을 사용하는 메서드
test
도 제공합니다.test "creating from a controller" do
# assert ...
end
공백이 포함된 문자열을 전달할 수 있는 이 테스트를 어떻게 실행합니까?
이를 위해 우리는
test
메서드 내부로 들어가서 무엇을 하는지 확인해야 합니다. test
메서드의 소스 코드를 열면 다음과 같이 됩니다.def test(name, &block)
test_name = "test_#{name.gsub(/\s+/, '_')}".to_sym
defined = method_defined? test_name
raise "#{test_name} is already defined in #{self}" if defined
if block_given?
define_method(test_name, &block)
else
define_method(test_name) do
flunk "No implementation provided for #{name}"
end
end
end
첫 번째 줄은
name
문자열의 모든 공백을 밑줄_
로 바꾸고 시작 부분에 test
를 추가합니다. 따라서 테스트 이름creating from a controller
은 test_creating_from_a_controller
가 됩니다. 그런 다음 메타프로그래밍을 사용하여 동일한 이름의 메서드를 정의합니다. 따라서 위의 테스트 방법은 다음과 같습니다.def test_creating_from_a_controller
# assert ...
end
이제 이름을 알았으므로 다음과 같이 이 테스트를 실행할 수 있습니다.
> ruby -I test test/controller/renderer_test.rb -n test_creating_from_a_controller
도움이 되었기를 바랍니다.
Reference
이 문제에 관하여(Minitest에서 공백으로 단일 테스트 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/software_writer/running-a-single-test-with-spaces-in-minitest-12l8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)