Je veux d'abord dire que je suis nouveau à RequireJS et encore plus nouveau à Jasmine.
J'ai quelques problèmes avec le SpecRunner et require JS. J'ai suivi les tutoriels d'Uzi Kilon et de Ben Nadel (ainsi que d'autres) et ils m'ont aidé, mais j'ai encore des problèmes.
Il semble que, si une erreur est lancée dans le test (je pense à une en particulier, une erreur de type), le spec runner html s'affiche. Cela me dit que j'ai des problèmes dans le javascript. Cependant, après avoir corrigé ces erreurs, aucun HTML ne s'affiche plus. Je ne parviens pas à afficher le programme d'exécution des tests. Quelqu'un peut-il trouver une erreur dans mon code qui causerait ce problème ?
Voici mon structure des répertoires :
Root
|-> lib
|-> jasmine
|-> lib (contains all of the jasmine lib)
|-> spec
|-> src
|-> jquery (jquery js file)
|-> require (require js file)
index.html (spec runner) specRunner.js
Voici le SpecRunner (index) HTML :
<!doctype html>
<html lang="en">
<head>
<title>Javascript Tests</title>
<link rel="stylesheet" href="lib/jasmine/lib/jasmine.css">
<script src="lib/jasmine/lib/jasmine.js"></script>
<script src="lib/jasmine/lib/jasmine-html.js"></script>
<script src="lib/jquery/jquery.js"></script>
<script data-main="specRunner" src="lib/require/require.js"></script>
<script>
require({ paths: { spec: "lib/jasmine/spec" } }, [
// Pull in all your modules containing unit tests here.
"spec/notepadSpec"
], function () {
jasmine.getEnv().addReporter(new jasmine.HtmlReporter());
jasmine.getEnv().execute();
});
</script>
</head>
<body>
</body>
</html>
Voici le specRunner.js (config)
require.config({
urlArgs: 'cb=' + Math.random(),
paths: {
jquery: 'lib/jquery',
jasmine: 'lib/jasmine/lib/jasmine',
'jasmine-html': 'lib/jasmine/lib/jasmine-html',
spec: 'lib/jasmine/spec/'
},
shim: {
jasmine: {
exports: 'jasmine'
},
'jasmine-html': {
deps: ['jasmine'],
exports: 'jasmine'
}
}
});
Voici une spécification :
require(["../lib/jasmine/src/notepad"], function (notepad) {
describe("returns titles", function() {
expect(notepad.noteTitles()).toEqual("");
});
});
La source du bloc-notes :
define(['lib/jasmine/src/note'], function (note) {
var notes = [
new note('pick up the kids', 'dont forget to pick up the kids'),
new note('get milk', 'we need two gallons of milk')
];
return {
noteTitles: function () {
var val;
for (var i = 0, ii = notes.length; i < ii; i++) {
//alert(notes[i].title);
val += notes[i].title + ' ';
}
return val;
}
};
});
Et la source de la note (JIC) :
define(function (){
var note = function(title, content) {
this.title = title;
this.content = content;
};
return note;
});
Je me suis assuré qu'en ce qui concerne l'application, les chemins sont corrects. Une fois que j'aurai réussi à faire fonctionner l'application, je pourrai m'amuser à configurer les chemins d'accès de manière à ce qu'ils ne soient pas si dégoûtants.