SublimeSpecCreator: Specs per Knopfdruck

class User < ActiveRecord::Base
	
  def logged_in?
    # ...
  end

end

+ Super+Alt+S =

require 'spec_helper'

describe User do

  describe '#logged_in?' do
    |
  end

end

Alles klar, für diese Logged-In-Methode fehlt der Test. Okay, für das Model gibt es noch keine Specs. Also Strg+n, Spec-Snipplet reinkopieren, den Namen setzen, Strg+s, Spec-Verzeichnis suchen, Dateinamen eingeben, OK, … Was wollte ich doch gleich?

Spec-Erstellung nervt, dabei lässt sie sich prima automatisieren. Macht man das als Sublime-Text-Plugin, kann man dabei noch Python lernen.

Mein erster funktionierender Entwurf für Rails- und RSpec-Projekte ist ab sofort auf Github zu finden. Er funktioniert wie oben skizziert: Methodennamen markieren, konfiguriertes Tastenkürzel drücken und das Plugin ergänzt einen Describe-Block im passenden Spec-File. Existiert dieses noch nicht, wird es im entsprechenden Verzeichnis angelegt.

Einschränkungen

Ganz zufrieden bin ich mit dem bisherigen Ansatz noch nicht. Erstens können noch keine Specs für Views erzeugt werden, zweitens kann ich den Cursor nach dem Öffnen der Spec-Datei nicht an der neu eingefügten Stelle platzieren.

Punkt eins ist für mich wenig kritisch, da Views in aller Regel samt Specs generiert werden.

Den Cursor in das neue Describe zu setzen ist schwierig, da ich den Block hinter Sublimes Rücken mittels Dateioperationen einfüge. Hier müsste man den Sublime-hat-die-Änderung-bemerkt-und-die-Datei-neu-geladen-Event abfangen, den ich in der Doku leider nicht finden kann. Ein Editieren mit Sublime-Bordmitteln wollte ich im Sinne der Wiederverwendbarkeit eigentlich verhindern, es scheint aber so gesehen einige Vorteile zu bieten. Zudem könnte man dann auf Sprachparser zurückgreifen und müsste den Describe-Block nicht durch Textersetzung positionieren.

Installation und Konfiguration

Die Einrichtung läuft derzeit vollständig manuell als User-Skript. Mit dem Packen von Sublime-Plugins und dem Eintragen in Package Control habe ich keine Erfahrungen, vielleicht kann ich das bei Gelegenheit nachholen. Aber auch so sind es nur zwei Schritte, die auf meinem hiesigen Ubunturechner folgendermaßen ablaufen:

Python-Datei ins Verzeichnis Packages/User von Sublime:

wget https://raw.github.com/SebastianG86/SublimeSpecCreator/master/create_spec.py ~/.config/sublime-text-2/Packages/User/

In Sublime unter „Preferences“ > „Key Bindings – User“ einen beliebigen Shortcut eintragen:

{ "keys": ["super+alt+s"], "command": "create_spec" }

Ich hoffe, dass es dem einen oder anderen Testgetriebenen da draußen hilft.

sublime-spec-creator