On Github Zhigalov / fdconf-tests-slides
function(words) { return '#' + words .split(/\s+/) .map(normalizeWord) .join(''); }
function() { var actual = hashTag('hello FDConf'); actual.should.be.equal('#HelloFdconf'); }
Придает уверенности
Придает уверенности
Придает уверенности
Помогает рефакторить
Обновлять зависимости
Быть командой
Живая документация
FDConf 2016 -> #Fdconf2016 Тестов много не бывает -> #ТестовМногоНеБывает
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 FDConf');
actual.should.be.equal('#HelloFdconf');
});
});
$ 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`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
⬇ В строке поиска набрать "Слайды тестирование FDConf"
⬇ Проверить что репозиторий есть в списке
$ npm install webdriverio
$ wdio config
⬇ wdio.conf.js
describe('GitHub', function () {
it('search', function () {
browser.url('http://github.com');
browser.setValue('input[name="q"]',
'Слайды тестирование FDConf');
browser.submitForm('form[action="/search"]');
var repoName = browser.getText('h3');
repoName.should.be .equal('Zhigalov/fdconf-tests-slides');
});
});
wdio wdio.conf.js
В IDE
При сохранении файла
Перед коммитом и пушем (husky)
└── .travis.yml
language: node_js node_js: - "4.1"
└── .travis.yml └── package.json
{ "scripts": { "test": "mocha test" } }
var translate = require('translate');
function hashTagGenerator(words) { return '#' + translate(words) .split(/\s+/) .map(normalizeWord) .join(''); }
it('should translate hashTag', function (){
function translateMock () {
return 'Hello, FDConf!';
}
mockery.registerMock('translate', translateMock);
mockery.enable();
var hashTag = require('../src/hashTagGenerator.js');
var actual = hashTag('Привет, FDConf!');
actual.should.be.equal('#HelloFDConf');
});
var nock = require('nock'); nock('https://translate.com') .get('/text=Привет+FDConf') .reply(200, 'Hello FDConf);
приятно
удобно
рабочий код
удовольствие
уверенность
speaker.should.deep.equal({ face: , name: 'Сергей', twitter: '@sergey_zhigalov', email: 'zhigalov@yandex-team.ru' });