先のmiddleman-jasmineを使って、テストを書こうとしたのだけれど、色々とハマってしまった。
どうも世間で書かれているテストコードが自分の環境では動かない。
とりあえず動いたコードをここに書いておく。
まず、spec.coffeeに、angular-mock.jsを登録する。
angular-mocksの置き場所は自分で考えてください!ちなみに私の場合はbower_components以下にあります。
#= require application #= require angular-mocks/angular-mocks
次にテストを書く。
'use strict';
describe('RssReader controllers', function() {
  describe('TopCtrl', function(){
    var $scope, createController;
    beforeEach(function(){
        module('RssReader.controllers');
        inject(function($rootScope, $controller) {
          $scope = $rootScope.$new();
          createController = function(){
            return $controller('TopCtrl', {
              $scope: $scope,
              $rootScope: $rootScope
            });
          }
        });
      });
    it('タイトルがIonicRSSReaderであること', function(){
      var controller = createController();
      expect($scope.title).toBe('IonicRSSReader');
    });
  });
});
よくみたサンプルコードだと、beforeEach(module(“RssReader.controllers”));
というコードだったのですが、これだとmoduleがundefinedだと言われてテストが落ちるだけでした。私もそもそもなんでこういうコードなのか謎だなと思っていたので、ここを無名関数にしたら普通に動いたので、beforeEach(function(){});がよさそうです。それとも、なにか前提条件が間違っているのだろうか…。

