Squeak.ru - шаблоны программирования

Получение ReferenceError: не удается найти переменную: описать при попытке запустить тесты с мокко и фантомным js

У меня проблемы с тестированием моего приложения Durandal с мокко с использованием phantomJs. Вот что я сделал:

Сначала я создал dummyPage для включения тестов в среду requireJs:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="mocha.css" />
    <script type="text/javascript" src="chai.js"></script>
    <script type="text/javascript" src="mocha.js"></script>
    <script type="text/javascript" src="../lib/jquery/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="../lib/knockout/knockout-2.3.0.js"></script>
    <script type="text/javascript" src="../lib/require/require.js"></script>
    <script type="text/javascript">
        require.config({
            baseUrl: '../app/',
            paths: {
                'app': '../app',
                'specs': '../sampleTest/specs/',
                'text': '../lib/require/text',
                'durandal': '../lib/durandal/js',
                'plugins' : '../lib/durandal/js/plugins',
                'transitions' : '/lib/durandal/js/transitions',
                'knockout': '../lib/knockout/knockout-2.3.0',
                'jquery': '../lib/jquery/jquery-1.9.1'
            }
        });
        var runTests = function (specfiles) {
            console.log('enter runTests');
            require(specfiles, function () {
                mocha.setup('bdd');
                assert = chai.assert;

                mocha.run();
            });
        };
    </script>
</head>
<body>
</body>
</html>

Мой dummyTest выглядит так:

console.log('введите фиктивный тест');

define(['viewmodels/flickr'], function (flickr) {
    describe('Test 1', function(){
        it('should append a value', function () {
            var arr = [];
            arr.push('foo');
            arr.push('bar');
            assert.equal(arr[0],'foo', 'foo is a string');
        });
    });
})

Когда я запускаю phantomJs со следующим js-файлом, я получаю сообщение об ошибке:

Получение ReferenceError: не удается найти переменную: описать

page.onLoadFinished = function () {
    page.evaluate(function (specFiles) {
        runTests(specFiles);
    }, specFiles);
};

page.open('mocha.htm');

Ответы:


1

Мне кажется, проблема в том, что Mocha неправильно инициализируется до того, как вы начнете требовать модули, содержащие ваши тесты. Измените функцию runTests так, чтобы инициализация, необходимая вашим тестовым модулям, выполнялась перед их загрузкой. так:

var runTests = function (specfiles) {
    console.log('enter runTests');

    // Initialize mocha and leak assert into the global space.
    mocha.setup('bdd');
    assert = chai.assert;

    require(specfiles, function () {
        mocha.run();
    });
};
09.04.2014
  • Спасибо, что решает проблему. Вы также знаете, как отобразить результат теста, когда я запускаю phantomjs spec.js. В настоящее время я не вижу никакого вывода 09.04.2014
  • Я использую Mocha, Chai и RequireJS, и этого было достаточно, чтобы ответить на ваш вопрос здесь, но я не использую PhantomJS, поэтому не могу помочь с этой новой проблемой. Я бы предложил проверить вопросы PhantomJS уже на SO, чтобы убедиться, что на них еще не ответили, и если на них не ответили, то задать новый вопрос. 09.04.2014
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...