The amount of times that I've finished writing the expectation of a test, then navigated up to the description of the test (usually using %
to match the closing bracket), then added a .only
after the it
to run only that specific test… yes… a large amount of times.
So finally I made a vim snippet to do this for me.
map <leader>fit <Esc>/^\s*it(<cr>N0f(i.only<Esc>
Now, all I need to type is <leader> + fit
to achieve the same thing.
How it works:
First it searches for the next line beginning with it(
, which is how the tests always start.
But I don’t want to next line, I want the previous line, because I will probably have just finished typing the test assertion or something else in the body of the test.
So after it found the beginning of the line, I'm using N
to find the previous one.
Then I'm using 0
to go to the beginning of the line, find the opening bracket and type .only
.
In Jasmine, you could focus a test with adding an f
in front of the it
.
I'm not using Jasmine now, but in my previous job we had a lot of fun with this letter combination ("fit tests"... I won't go into detail because, you know… you had to be there really).
But that's why I called the shortcut "fit".
I also created a snippet to remove the focus from the test, which we used to call "unfit a test". I told you, you had to be there…
Unfitting works like this:
map <leader>unfit <Esc>/^\s*it.only(<cr>fodiwhx<Esc>
Find lines beginning with it.only(
, then find the letter 'o', delete the whole word and also remove the dot by moving left with h
and typing x
for deleting.
Well fit.