[JS Applications] Unit tests с Mocha.js и RequireJS


6
Здравейте, колеги. Имам следния проект : https://github.com/izabelk/CrowdChat (това е домашното от лекцията за SPA Applications). Задачата си работи добре, но се опитвам да напиша някакви unit тестове по нея, само че ми възникват доста проблеми. Използвам mocha и chai, като ги инсталирах през Nuget Package Manager-a на Visual Studio. Също така за цялата задача използвам RequireJS. Ако стартирате index.html, задачата си се стартира без проблеми и чатът работи, но ако стартирате tests.html, се получават грешки. Получавам Refference Error, че chai не било дефинирано. Опитвам се да подкарам тестовете в Chrome, но някак си не мога да навържа RejuireJS i chai. Търсих в Интернет откъде може да идва проблема, но не намерих мнгоо информация, единственото беше да заредя RequireJS след chai.js, но и това не помогна. Ако пробвам chai и mocha за някакви елементарни примери, си работят, но така като се опитам да ги вкарам с RequireJS и в някакъв по-голем проект, не става. Някой знае ли откъде може да е проблема и съответно да помоля, ако някой е писал unit tests на задачата от домашното или на някоя подобна, да качи проекта да разгледам как се прави и какви точно тестове има. :)



Отговори



9
Прави се по следния начин като трябва да промениш пътищата да сочат към твоите библиотеки. Също така трябва да смениш baseUrl в main.js.
 
test.html
 
<html>
<head>
    <meta charset="utf-8">
    <title>Mocha Tests</title>
    <link rel="stylesheet" href="libraries/mocha/mocha.css" type="text/css" />
</head>
<body>
<div id="mocha"></div>
<script src="libraries/requirejs/require.js" data-main="test/main"></script>
</body>
</html>
 
main.js
 
(function () {
    "use strict";
    require.config({
        baseUrl: 'test',  
        paths: {
            jquery: '../libraries/jquery/dist/jquery',
            handlebars: '../libraries/handlebars/handlebars.amd',
            underscore: '../libraries/underscore/underscore',
            sammy: '../libraries/sammy/lib/sammy',
            mocha:'../libraries/mocha/mocha',
            chai:'../libraries/chai/chai'
        }
    });
 
    require(['mocha', 'chai'], function () {
        mocha.setup('bdd');
        require(['session/test.session'], function() {
            mocha.run();
        });
    })
}());
 
test.session.js
 
define(['chai', '../../javascripts/session/session'], function (chai, UserSession) {
    var assert = chai.assert;
 
    describe('session', function () {
        describe('session', function () {
            it('asd', function () {
                var session = new UserSession('pavel');
                assert.equal('pavel', session.login());
            })
        })
    });
});

 


от lithical (992 точки)


0
А някаква идея как да тестваш UI по избран html файл? В смисъл:
var aboutMe= $('#aboutMe').text(); expect(aboutMe).to.equal('Me');
, винаги ми връща че '' не е равно на 'Me', защото не търси в html-a който аз искам :)

от penjurov (1466 точки)

0
Голяма борба беше докато го подкарам това, благодаря пичага!!! Жив да си! Ако ви казва, че expect is undefined. Добавете var expect = chai.expect;

от plamen.yovchev (3283 точки)