2013-10-12 3 views
3

저는 최근에 주 편집자로 VIM을 사용하기 시작했습니다. 지금까지 제공되는 멋진 작은 기능을 모두 발견 한 큰 재미를 가지고있는 Im. 나는 편집기 (오페라가 특정 시나리오를 실행할 수 있다면 보너스)에서 오이 테스트를 실행하기 위해 며칠 동안을 찾고있었습니다. vim-cucumber 및 vim-vroom과 같은 플러그인을 시도했지만 작동하지 못하는 것 같습니다. 참고 : env.rb에서 "Rake"명령을 실행하는 것과 같은 일을합니다. 아마 플러그인이 작동하지 않는 이유 일 수 있습니다. 누군가가 같은 보트에 있었는지 궁금해하고 해결책과 도움이 있다면 크게 감사하겠습니다. 내가 커서 아래 RSpec에 또는 오이 테스트를 실행할 ,t를 입력 할 때vim 또는 macvim에서 오이 테스트를 실행합니다

감사 알렉스

답변

2

나는 것과 매핑을 설정하고, 내가 ,T를 입력 할 때 나는에있어 전체 파일이 실행됩니다. 내가 rspec 또는 오이 파일에 없을 때 ,t을 입력하면 마지막으로 실행 한 테스트가 다시 실행됩니다. 여기 내 vimrc의 관련 부분이 있습니다.

" Set the leader  
let mapleader = ","  

" Run tests                       
autocmd FileType ruby,eruby,yaml,haml,scss,cucumber nmap <leader>t :call RunTestCommand(line('.'))<CR> 
autocmd FileType ruby,eruby,yaml,haml,scss,cucumber nmap <leader>T :call RunTestCommand()<CR>   

function! GetTestCommand()                    
    if expand('%:r') =~ '_spec$'                  
     return 'bundle exec rspec'                  
    elseif expand('%') =~ '\.feature$'                 
     return 'bundle exec cucumber'                 
    else                        
     return '0'                      
    endif                        
endfunction                       

function! RunTestCommand(...)                   
    let cmd = GetTestCommand()                   

    " if there's a command update the test command register (t)          
    if cmd != '0'                      
     let @t = ':!' . cmd . ' ' . expand('%') . (a:0 == 1 ? ':'.line('.') : '')      
    endif                        

    " if the test command register isn't empty, excecute it.           
    if strlen(@t) > 0                     
     execute @t                      
    elseif                        
     echoerr "No test command to run"                
    end                        

endfunction                       
1

일부 사람들에게는 성가 시지만 특정 파일에 대한 사양을 실행하려면 테스트 키를 다시 매핑하고 싶습니다. 그래서 내 세션에서 다음을 실행 해 보겠습니다.

:map ,t :w\|:!cucumber features/my_cucumber_feature.feature<cr> 

그런 식으로 제가하고있는 일만 테스트하고 모든 파일을 테스트 할 필요가 없습니다. 내 프로젝트의 어느 위치에서나 파일을 편집 할 수 있기 때문에이 메소드가 마음에 들지만 실행하려는 테스트 만 실행하기 때문에이 메소드가 마음에 들다. 기본적으로 그것은 말한다; 모든 파일을 저장하고 사양을 실행하십시오. 난 단지 내 상황과 관련된 테스트가 아닌 전체 스위트를 실행하려면 같은 내가 빠른 피드백을 좋아

:map ,t :w\|:!rspec spec/models/my_model_spec.rb<cr> 

: 내가 단위 테스트를 실행하는거야 경우 내가로 변경. 내가 마지막으로 아무것도 놓치지 않았 음을 확인하기 위해 전체 제품군을 실행할 것입니다.