Configure Javascript tests to allow running in browser

This commit is contained in:
xhh
2015-12-17 18:51:12 +08:00
parent 146b4a4813
commit dcfe40fc44
5 changed files with 61 additions and 18 deletions

View File

@@ -12,6 +12,7 @@
},
"devDependencies": {
"mocha": "~2.3.4",
"expect.js": "~0.3.1",
"mockrequire": "~0.0.5",
"domino": "~1.0.20",
"xmlhttprequest": "~1.8.0"

View File

@@ -12,6 +12,7 @@
},
"devDependencies": {
"mocha": "~2.3.4",
"expect.js": "~0.3.1",
"mockrequire": "~0.0.5",
"domino": "~1.0.20",
"xmlhttprequest": "~1.8.0"

View File

@@ -0,0 +1,19 @@
var mockrequire = require('mockrequire');
var jquery = require('jquery');
var domino = require('domino');
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
var window = domino.createWindow();
var $ = jquery(window);
$.support.cors = true;
$.ajaxSettings.xhr = function() {
return new XMLHttpRequest();
};
var requireWithMocks = function(path) {
return mockrequire(path, {
'jquery': $
});
};
exports.requireWithMocks = requireWithMocks;

View File

@@ -0,0 +1,33 @@
<html>
<head>
<meta charset="utf-8">
<title>Mocha Tests</title>
<link href="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css" rel="stylesheet" />
</head>
<body>
<div id="mocha"></div>
<script src="https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/Automattic/expect.js/0.3.1/index.js"></script>
<script src="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js"></script>
<script src="../src/model/Category.js"></script>
<script src="../src/model/Tag.js"></script>
<script src="../src/model/Pet.js"></script>
<script src="../src/model/User.js"></script>
<script src="../src/api/PetApi.js"></script>
<script>
mocha.setup({
ui: 'bdd',
timeout: 5000
});
</script>
<script src="test.js"></script>
<script>
mocha.checkLeaks();
mocha.globals(['jQuery']);
mocha.run();
</script>
</body>
</html>

View File

@@ -1,27 +1,16 @@
var assert = require('assert');
var mockrequire = require('mockrequire');
var jquery = require('jquery');
var domino = require('domino');
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
var window = domino.createWindow();
var $ = jquery(window);
$.support.cors = true;
$.ajaxSettings.xhr = function() {
return new XMLHttpRequest();
};
var PetApi = mockrequire('../src/api/PetApi', {
'jquery': $
});
if (typeof module === 'object' && module.exports) {
var expect = require('expect.js');
var requireWithMocks = require('./helper.js').requireWithMocks;
var PetApi = requireWithMocks('../src/api/PetApi');
}
describe('PetApi', function() {
describe('#getPetById', function () {
it('should work', function (done) {
var api = new PetApi();
api.getPetById(1, function(pet, textStatus, jqXHR) {
assert.equal('success', textStatus);
assert.equal(1, pet.id);
expect(textStatus).to.be('success');
expect(pet.id).to.be(1);
done();
});
});