On Github Zhigalov / dump-tests-slides
Сергей Жигалов
function(words) { return '#' + words .split(/\s+/) .map(normalizeWord) .join(''); }
function() { var actual = hashTag('hello DUMP'); actual.should.be.equal('#HelloDump'); }
Придает уверенности
Придает уверенности
Придает уверенности
Помогает рефакторить
Обновлять зависимости
Быть командой
Живая документация
DUMP 2016 -> #Dump2016 Тестов много не бывает -> #ТестовМногоНеБывает
function hashTagGenerator(words) { return '#' + words .split(/\s+/) .map(normalizeWord) .join(''); }
function normalizeWord(word) { return word.charAt(0).toUpperCase() + word.toLowerCase().slice(1); }
module.exports = hashTagGenerator;
app/ └── src └── hashTagGenerator.js └── ... └── test └── hashTagGenerator-test.js └── ...
var hashTag = require('../src/hashTagGenerator.js');
describe('Hash tag generator', function () {
it('should normalize words', function () {
var actual = hashTag('hello DUMP');
actual.should.be.equal('#HelloDump');
});
});
$ npm install chai
var chai = require('chai'); chai.should();
$ mocha test
Hash tag generator ✓ should normalize words 1 passing (3ms)
it('should clean extra symbols', function () { var actual = hashTag(' #@mu-ha-ha!!!'); actual.should.be.equal('#MuHaHa'); });
Hash tag generator ✓ should start with # ✓ should concat words ✓ should normalize words 1) should clean extra symbols 3 passing (13ms) 1 failing 1) Hash tag generator should clean extra symbols: AssertionError: expected '##@%mu-ha-ha!' to equal '#MuHaHa' + expected - actual -##@%mu-ha-ha! +#MuHaHa
function hashTagGenerator(words) { return '#' + words .split(/\s+/) .map(normalizeWord) .join(''); }
function hashTagGenerator(words) { return '#' + words .split(/[^\wа-яё]/i) .map(normalizeWord) .join(''); }
describe('Twitter signup', function () { it('should alert when enter `twitterok`', function () { inputTextTo($('#full-name'), 'twitterok'); $('.notwitter').is(':visible').should.be.true; }); });
function inputTextTo($el, text) { $el.val(text).trigger('input'); }
function inputTextTo($el, text) { $el.focus(); document.execCommand( 'insertText', false, text); }
<!-- подключаем стили Mocha --> <link rel="stylesheet" href="./node_modules/mocha/mocha.css">
<!-- подключаем библиотеки --> <script src="./node_modules/mocha/mocha.js"></script> <script src="./node_modules/chai/chai.js"></script>
<!-- настраиваем Mocha --> <script> mocha.setup('bdd'); </script>
<!-- подключаем файл с тестами --> <script src="/form-test.js"></script>
<!-- элемент в котором будут результаты тестов --> <div id="mocha"></div>
<!-- запускаем Mocha --> <script> mocha.run(); </script>
$ npm install -g mocha-phantomjs
<!-- запускаем Mocha --> <script> window.mochaPhantomJS ? mochaPhantomJS.run() : mocha.run(); </script>
$ mocha-phantomjs twitter-signup.html
Twitter signup ✓ should no error when input is empty ✓ should no error when input `teremok` ✓ should show error when input `twitterok` 3 passing (14ms)
Перейти на главную страницу https://github.com
⬇ В строке поиска набрать "Слайды тестирование DUMP"
⬇ Проверить что репозиторий есть в списке
$ npm install webdriverio
$ wdio config
⬇ wdio.conf.js
describe('GitHub', function () {
it('search', function () {
browser.url('http://github.com');
browser.setValue('input[name="q"]',
'Слайды тестирование DUMP');
browser.submitForm('form[action="/search"]');
var repoName = browser.getText('h3.repo-list-name');
repoName.should.be.equal('Zhigalov/dump-tests-slides');
});
});
wdio wdio.conf.js
В IDE
При сохранении файла
Перед коммитом и пушем (husky)
# .travis.yml language: node_js node_js: - "4.1"
// package.json { "scripts": { "test": "mocha test" } }
var nock = require('nock'); nock('https://api.github.com') .get('/users/zhigalov') .query(true) .reply(200, { "name": "Sergey Zhigalov", "company": "Яндекс", "email": "sergey.zhigalov@gmail.com" });
var request = require('request'); var url = 'https://api.github.com/users/zhigalov'; request(url, function (error, res, body) { console.log(body); });
{ "name": "Sergey Zhigalov", "company": "Яндекс", "email": "sergey.zhigalov@gmail.com" }
приятно
удобно
рабочий код
удовольствие
уверенность
speaker.should.deep.equal({ face: , name: 'Сергей', twitter: '@sergey_zhigalov', email: 'zhigalov@yandex-team.ru' });