AngularJSのテストをJasmineで書く。

先の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(){});がよさそうです。それとも、なにか前提条件が間違っているのだろうか…。


カテゴリー JavaScript | タグ   | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です