所以我对整个测试都是新手(我一直是那些说'我应该编写单元测试......'但从未最终这样做过的人之一:-p)。我现在正在为这个项目编写单元测试。我正在使用 testacular + Jasmine 和 browserify 来编译东西。在我开始尝试做很多 AngularJS 注入工作之前,我没有遇到任何问题。
现在我只是试图对 ng-model 进行测试以了解所有这些。
我有一个 testacular.conf 文件,其中包含所有必要的内容:
files = [
'../lib/jquery.js',
'../lib/angular.js',
'./lib/jasmine.js',
'./lib/angular-mocks.js',
JASMINE_ADAPTER,
'./tests.js' //compiled by browserify
];
我定义了我的控制器(MainCtrl.coffee)
MainCtrl = ($scope, $rootScope) ->
$scope.hello = 'initial'
module.exports = (angularModule) ->
angularModule.controller 'MainCtrl', ['$scope', '$rootScope', MainCtrl]
return MainCtrl
我有自己的测试:(_MainCtrlTest.coffee,与 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()
测试立即失败,输入的 elm.val() 返回空白,scope.hello 返回预期值('initial',在 MainCtrl.coffee 中设置)
我在这里做错了什么?