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