2014-09-05 2 views
32

Chai - это библиотека утверждений.В чем разница между библиотекой утверждений, средой тестирования и тестовой средой в javascript?

Mocha и Jasmine проверяют рамки.

и Karma - испытательная среда.

Я уже читал Difference between available testing frameworks: mocha, chai, karma, jasmine, should.js etc.

+0

Чтобы сделать вещи еще более сложными, есть также [клиенты Selenium Webdriver Node.JS] (http://www.slant.co/topics/2814/viewpoints/2/~what-are-the-best-node -js-selenium-webdriver-client-libraries-bindings), некоторые из которых позволяют запускать тесты Jasmine, Cucumber или Moca + Chai (например, WebdriverIO). –

+1

Вопрос не очень хорошо написан, учитывая, что OP дает примеры из 3 вещей, которые они хотят уточнить, и они даже дали ссылку для получения дополнительной информации. Его почти собственный ответ на название вопроса. Тем не менее, я «предполагаю», что, учитывая предоставленную информацию, OP хочет получить более подробную разбивку. Но это поможет узнать, какие части до сих пор неясны для ОП. – redfox05

ответ

22

Утверждающих библиотеками являются инструментом для проверки того, что все правильно.
Это упрощает проверку кода, поэтому вам не нужно делать тысячи сообщений if.
Примера (с использованием should.js и Node.js утверждает модуль):

var output = mycode.doSomething(); 
output.should.equal('bacon'); //should.js 
assert.eq(output, 'bacon'); //node.js assert 

// The alternative being: 
var output = mycode.doSomething(); 
if (output !== 'bacon') { 
    throw new Error('expected output to be "bacon", got '+output); 
} 

рамки тестирования используется для организации и выполнения тестов.
Мокка и Жасмин - два популярных варианта (и они на самом деле похожи друг на друга).
Пример (с использованием мокко с should.js здесь):

describe('mycode.doSomething', function() { 
    it ('should work', function() { 
    var output = mycode.doSomething(); 
    output.should.equal('bacon');  
    }); 
    it ('should fail on an input', function() { 
    var output = mycode.doSomething('a input'); 
    output.should.be.an.Error; 
    }); 
}); 

Testing Среда являются местами, где вы запускаете тесты.

Карма - это крошечный кейс, в том смысле, что это своего рода одноразовый инструмент, не многим это нравится. Карма работает, запуская тесты вашего устройства внутри браузеров (по умолчанию для PhantomJS, браузера без браузера WebKit), чтобы вы могли протестировать JavaScript-код на основе браузера.

Рамки, такие как Mocha и Jasmine, работают как в браузере, так и в Node.js и обычно по умолчанию для узла.

+0

Извините, я до сих пор не понимаю. как тестовая среда, так и тестовый бегун могут запустить мой тест. почему нам нужна карма? – Nader

+3

@ Nader Karma упрощает проверку кода JavaScript на основе браузера, иначе вы в основном зацикливаетесь на выполнении тестов в Node.js. Хотя Node отлично подходит для многих вещей, он не так хорошо работает для кода на базе браузера. –

+0

Мне нравится ваш пример утверждения в vanilla JS. Стоит подчеркнуть, что вы можете писать модульные тесты без библиотеки утверждений. Библиотеки утверждений, такие как [should.js] (https://shouldjs.github.io/), [ChaiJS] (http://chaijs.com/) или [Node.js Assert] (https://nodejs.org /api/assert.html) являются просто [синтаксическим сахаром] (https://en.wikipedia.org/wiki/Syntactic_sugar), потому что они предоставляют более читаемые пользователем тесты, позволяя вам писать утверждения в синтаксисе на естественном языке. – gfullam

29

Испытательная среда (или тестовый бегун) - это то, что выполняет все ваши тесты. Он запускает их, агрегирует результаты и т. Д.

Структура тестирования - это то, что вы используете для создания каждого из тестов. Например, жасмин использует синтаксис

it('name of test', function() { 
    // do some tests 
}); 

Библиотека утверждения является то, что делает фактической проверку теста результаты

it('name of test', function() { 
    assert x == 5 //pseudocode, the syntax will vary based on your asserting framework 
}); 
+0

Очень приятное объяснение :) заслуживает большего количества очков. –

+0

Обратите внимание, что структура тестирования также может агрегировать результаты. Например. у мокки есть несколько разных репортеров. –

Смежные вопросы