Tak więc jestem nowy w całym teście (byłem jednym z tych ludzi, którzy powiedzieli "powinienem pisać testy jednostkowe ...", ale nigdy w życiu tego nie robiłem: - p). Piszę teraz testy jednostkowe dla tego projektu. Używam testacular + Jasmine, z przeglądarką do kompilacji rzeczy. Nie miałem żadnych problemów, dopóki nie zacząłem próbować robić wiele rzeczy wtryskowych AngularJS.AngularJS - podstawowe testy z wtryskiem
W tej chwili po prostu próbuję wykonać test modelu ng, aby uzyskać więcej informacji na ten temat.
Mam plik testacular.conf który zawiera wszystko, co niezbędne:
files = [
'../lib/jquery.js',
'../lib/angular.js',
'./lib/jasmine.js',
'./lib/angular-mocks.js',
JASMINE_ADAPTER,
'./tests.js' //compiled by browserify
];
mam zdefiniowaną mój kontroler (MainCtrl.coffee)
MainCtrl = ($scope, $rootScope) ->
$scope.hello = 'initial'
module.exports = (angularModule) ->
angularModule.controller 'MainCtrl', ['$scope', '$rootScope', MainCtrl]
return MainCtrl
I mam testu sama: (_MainCtrlTest. kawa, w tym samym katalogu co MainCtrl.coffee)
testModule = angular.module 'MainCtrlTest', []
MainCtrl = require('./MainCtrl')(testModule)
describe 'MainCtrlTest', ->
scope = null
elm = null
ctrl = null
beforeEach inject ($rootScope, $compile, $controller) ->
scope = $rootScope.$new()
ctrl = $controller MainCtrl, $scope: scope
elm = $compile('<input ng-model="hello"/>')(scope)
describe 'value $scope.hello', ->
it 'should initially equal input value', ->
expect(elm.val()).toBe scope.hello
it 'should change when input value changes', ->
scope.$apply -> elm.val('changedValue')
expect(scope.hello).toBe elm.val()
Test kończy się niepowodzeniem natychmiast, przy pomocy urządzenia ut's elm.val() zwraca puste, a scope.hello zwraca zamierzoną wartość ("initial", ustawiana w MainCtrl.coffee)
Co ja tu robię źle?
Dzięki Vojta. Działa teraz :-) Tak, właśnie próbowałem zrobić podstawowy test kątowy, aby uzyskać moją głowę, jak wykonać iniektor i instancję kontrolera w teście. To wszystko jest naprawdę proste, co jest świetne. –