私は角度を付けたり、嘲笑したり、ジャスミンと仲良くする必要があるなど、多くの問題を抱えていました。最終的に答えは、ジャスミンを起動して、仕様に確実に対応する必要があることは明らかでした。これは私が行ったことの縮小版です。正しい軌道に乗るのに役立つことを願っています。
/* this would be 'main'*/
require.config({
paths: {
'jasmine-boot': 'lib/jasmine/boot',
'jashtml': 'lib/jasmine/jasmine-html',
'jasmine': 'lib/jasmine/jasmine',
'angular': 'lib/angular',
'angular-mocks': 'lib/angular-mocks',
'app': 'src/app',
'test': 'spec/first.spec',
},
shim: {
'jashtml': {
deps: ['jasmine']
},
'jasmine-boot': {
deps: ['jasmine', 'jashtml']
},
'angular': {
exports: "angular"
},
'angular-mocks': {
exports: "angular.mock",
deps: ['angular']
},
'test': {
deps: ['angular-mocks']
}
}
});
require(['jasmine-boot'], function () {
require(['test'], function () {
//trigger Jasmine
window.onload();
});
});
/*this would be 'first.spec'*/
define(['app'], function (app) {
var mockScope, controller;
function init() {
return angular.mock.inject(function ($injector, _$rootScope_, _$controller_) {
mockScope = _$rootScope_.$new();
controller = _$controller_('testCtrl', {
$scope: mockScope
});
});
};
describe('expect require', function () {
beforeEach(module("app"));
beforeEach(init());
describe('to be ', function() {
it('clever', function () {
var foo = "bar";
controller.setValue(foo);
expect(controller.value).toBe(foo);
});
});
});
});
/*jasmine spec runner*/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Jasmine Spec Runner v2.1.3</title>
<link rel="shortcut icon" type="image/png" href="jasmine_favicon.png">
<link rel="stylesheet" href="jasmine.css">
<script src="../../require.js" data-main="main.js"></script>
</head>
<body>
</body>
</html>