2013-11-14 2 views
10

Я генерировал некоторые тесты с использованием NodeJS и Mocha, и я хотел бы найти способ разместить результаты в браузере. Я знаю, что у Mocha есть поддержка для этого, используя репортер 'html' и mocha init <dir>, однако ни один из них не работает для меня (репортер на самом деле бросает ошибки, даже не запуская тест).Использование отчетов HTML с тестовой средой Mocha

Может ли кто-нибудь дать мне хороший пример запуска теста через Mocha и создания отчета HTML? Пример, который я хочу подражать, находится на сайте visionmedia. Кроме того, для примера, скажем, я использую тестовый файл с именем example.js.

Заранее благодарим за любую помощь. Удивительно, что таких примеров немного.

+0

Вы хотите видеть результат каждого теста или только результат конечного результата? –

+1

Что я ошибка, которая бросается? '$ mocha --reporter doc> report.html', похоже, работает на моей машине. –

+0

@limelights Каждое испытание, если возможно, но знание обоих было бы хорошим. – whitfin

ответ

6

Чтобы получить мокко, чтобы запустить тест в обоих браузере и в терминале следовать этому небольшому учебник:

Я принимаю следующие плагин для нормального Node.js теста мокко люкса.

  1. Node.js
  2. Мокко

И следующая структура дерева:

/root 
    /test 
    my_something_spec.js 
    /javascript 
    index.html 

index.html

Отказ от ответственности: Я откровенно недополученного все виды лучших но просто для того, чтобы указать вам в правильном направлении.

<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Mocha Tests</title> 
    <link rel="stylesheet" href="node_modules/mocha/mocha.css" /> 
</head> 
<body> 
    <div id="mocha"></div> 
    <script src="node_modules/mocha/mocha.js"></script> 
    <script>mocha.setup('bdd')</script> 
    <script src="test/my_something_spec.js"></script> 
    <script> 
     mocha.checkLeaks(); 
     mocha.run(); 
    </script> 
</body> 
</html> 

тест/my_something_spec.js

describe("my function", function() { 
    it("is a function", function() { 
    expect(true).to.be(true); 
    }); 
}); 

сервировки это с помощью простого питона сервера python -m SimpleHTTPServer 8080 от корня и посетить localhost:8080 даст вам хороший и неисправного тест. И работающий мокко с терминала даст вам тот же результат, что expect не определен.

+0

Я предполагаю, что это не сработает, если OP хочет протестировать код Node.js (например, потоки, fs или http-модули)? –

+0

Ну, и да, и нет. Если OP хочет протестировать потоки, fs или http-модули в браузере, OP может использовать браузер, чтобы требовать эти модули. Тем не менее, модули, действительно жестко связанные с Node.js, были бы/должны были бы издеваться, и реализация должна быть проверена (которая тогда будет работать в браузере, если посмеяться должным образом) –

+2

Действительно. Я считаю, что вопрос OP был больше: * «Как проверить сценарии Node.js, имея хороший вывод, который имеет Mocha для браузера?» * –

13

Вы пытаетесь использовать html репортер, который бросает, когда вы пытаетесь использовать его в узле:

$ mocha --reporter html > report.html 

/usr/local/lib/node_modules/mocha/lib/reporters/html.js:194 
    , div = document.createElement('div') 
      ^
ReferenceError: document is not defined 

согласно Mocha documentationrelevant issue in Github), то html репортер работает только в браузере, то есть. для проверки клиентского кода в браузере.

Если вы хотите вывести HTML для тестового сценария Node.js, используйте doc reporter, который будет генерировать HTML.

+0

А, так что я не могу использовать раздел поддержки браузера рядом с узлом? – whitfin

+0

Да, есть. Это требует большей настройки, если вы хотите, чтобы ваши материалы работали как в узле, так и в браузере. –

+0

@limelights Я полагаю, что вы тоже планируете отвечать? : p – whitfin

1

Мне нравится тестировать тот же код через Node.js и в браузере, в зависимости от ситуации. Я знаю, что вы просили «поместить результаты в браузер» (от Node.js?), Но я надеюсь, что этого будет достаточно.

Этот пример был создан на компьютере с Windows, но он также будет работать на Mac и Linux.

Для этого необходимо сделать не, для этого требуется веб-сервер (Node.js или другой).

Чтобы запустить тесты в браузере, откройте файл ./test/index.html.

Чтобы выполнить тесты в командной строке, просто выполните «мокко».

Начиная с нуля:

C:\TEMP>mkdir mocha_node_browser 

C:\TEMP>cd mocha_node_browser 

C:\TEMP\mocha_node_browser>dir 
Volume in drive C is MessedUp 
Volume Serial Number is CAB2-E609 

Directory of C:\TEMP\mocha_node_browser 

2014-08-09 12:17 <DIR>   . 
2014-08-09 12:17 <DIR>   .. 
       0 File(s)    0 bytes 
       2 Dir(s) 287,218,769,920 bytes free 

Инициализировать каталог, который будет содержать все тесты. Всегда называют это "тест":

C:\TEMP\mocha_node_browser>mocha init test 

Редактировать и/или создать несколько файлов:

C:\TEMP\mocha_node_browser>gvim -p test_me.js test\index.html test\tests.js 

я использую Chai. Один и тот же файл chai.js будет использоваться в обоих тестах.

C:\TEMP\mocha_node_browser>cd test 

C:\TEMP\mocha_node_browser\test>curl -O http://chaijs.com/chai.js 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 117k 100 117k 0  0 99902  0 0:00:01 0:00:01 --:--:-- 99902 

C:\TEMP\mocha_node_browser\test>cd .. 

После создания/редактирования файлов, запускать тесты с помощью командной строки:

C:\TEMP\mocha_node_browser>mocha 

    . 

    1 passing (15ms) 

... или указать свой браузер на ./test/index.html.

passes: 1 
failures: 0 
duration: 0.03s 

whatever 
    should return "it worked!" 

содержимое файла:

C:\TEMP\mocha_node_browser>type test_me.js 

// the function to be tested 
function whatever() { 
    return 'it worked!'; 
} 

// only kicks in when running in Node.js via "mocha" 
if (typeof module !== 'undefined') { 
    module.exports = whatever; 
} 

Добавить Chai и ваш источник, который вы хотите проверить в тестовом/index.html:

C:\TEMP\mocha_node_browser>type test\index.html 
<!DOCTYPE html> 
<html> 
    <head> 
    <title>Mocha</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <link rel="stylesheet" href="mocha.css" /> 
    </head> 
    <body> 
    <div id="mocha"></div> 
    <script src="mocha.js"></script> 
    <script>mocha.setup('bdd')</script> 

    <!-- added to index.html: --> 
    <script src="./chai.js"></script> 
    <script src="../test_me.js"></script> 

    <script src="tests.js"></script> 
    <script> 
     mocha.run(); 
    </script> 
    </body> 
</html> 

сделать тесты совместимы с командной строки и браузер

C:\TEMP\mocha_node_browser>type test\tests.js 

if (typeof require !== 'undefined') { 
    // testing in command-line 
    var chai = require('./chai'); 
    var whatever = require('../test_me'); 
} 

var expect = chai.expect; 

describe('whatever', function() { 
    it('should return "it worked!"', function() { 
    expect(whatever()).to.equal("it worked!"); 
    }); 
}); 
Смежные вопросы