2016-02-29 3 views
0

Я пытался проверить свой код, используя ES6 Tape утверждения и Nightmare.js загрузить тестовую страницу. Я продолжаю пробовать разные методы ES6: async/await, yield, generators, и я думаю, что немного передо мной. Я также не уверен, когда и когда не использовать babel-tape. Я могу пройти следующий тест, но в тот момент, когда я создаю еще один блок оценки, он ошибается. Документация довольно скудна (или используется Mocha). Какая здесь самая лучшая практика?ES6 тесты JavaScript с помощью ленты и Nightmare.js

import {test} from "tape"; 
import {default as nightmare} from "nightmare"; 

const page = nightmare().goto("http://localhost:4000/index.html"); 

page.evaluate(() => document.getElementsByTagName("body").length).end() 
    .then((result) => { 
    test("detect page body", (assert) => { 
     assert.equal(1, result); 
     assert.end(); 
    }); 
    }); 

пс. Я использую babel-tape-runner для запуска тестов.

ответ

1

Я могу получить следующий тест, чтобы пройти, но в тот момент, когда я создаю другой блок оценки, он ошибается.

Хм, вы вызываете .end() на экземпляр Кошмара. Вы не должны взаимодействовать с этим экземпляром после его завершения, что, вероятно, вызывает некоторые из ваших проблем.

документация довольно мало (или использует мокко)

Если вы посмотрите на набор тестов в кошмар, то describe блоки имеют beforeEach и afterEach, который устанавливает или уничтожает экземпляр Nightmare , соответственно. Ваш тест - по крайней мере, в моем чтении - создал бы один экземпляр Nightmare для всех ваших тестов, что может привести к нежелательному поведению.


Все, что было сказано, возможно, вы захотите попытаться перенести объявление и использование внутреннего кошмара в свои тесты. С манжетой, что-то вроде:

import {test} from "tape"; 
import {default as Nightmare} from "nightmare"; 

test('detect page body', (assert) => { 
var nightmare = Nightmare(); 
nightmare 
    .goto("http://localhost:4000/index.html") 
    .evaluate(() => document.getElementsByTagName("body").length) 
    .then((result) => { 
     assert.equal(1, result); 
     nightmare.end(()=>{ 
     assert.end(); 
     }); 
    }); 
});