Цитата:
it не начнёт выполняться пока beforeEach не выполнится, т.е. не вызовет done. С afterEach тоже самое, только после выполнений. |
kobezzza, вот что получилось в итоге, теперь я понял почему нужно писать тесты :)
describe('new ModalJS', function() { var modal; it( 'new Object', function() { modal = new ModalJS(); expect( typeof modal ) .toBe( "object" ); }); it ( "Create overlay", function () { expect ( isHTMLElement( modal.overlay) ) .toBe( true ); expect ( modal.overlay.parentElement ) .toBe( document.body ); } ); }); function isHTMLElement( elem ) { return (typeof elem === "object") && (elem.nodeType === 1) && (typeof elem.style === "object") && (typeof elem.ownerDocument ==="object"); } describe ( "Methods", function () { var modal, win; function resetWindow ( ) { win = document.getElementById( "modal-test-win"); win2 = document.getElementById( "modal-test-win2"); modal = new ModalJS( { NotUseAnimate: true } ).setWindow ( win || win2 ); } resetWindow(); it( "set window", function () { expect( modal.setWindow ( win )) .toEqual ( modal ); }); it ( "Show window", function ( ) { expect ( modal.show () ) .toBe ( true ); } ); it ( "Hide window", function ( ) { expect ( modal.hide () ) .toBe ( true ); } ); it ( "Window destroy", function ( ) { expect ( modal.destroy( ) ) .toBe ( true ); } ); it ( "Window destroy [remove Window]", function ( ) { resetWindow ( ); expect ( modal.destroy( true ) ) .toBe ( true ); expect ( modal.window ) .toBeUndefined(); } ); } ); describe ( "Async animate", function ( ) { var win2 = document.getElementById( "modal-test-win2"), modal = new ModalJS().setWindow ( win2 ); beforeEach( function ( done ) { modal.on ( "showed", done ); modal.show(); } ); it ( "Hide window", function ( done ) { modal.on ( "closed", done ); modal.hide(); } ); }); |
Цитата:
|
melky где по читать можно?
|
Дайте мне гениальную идею для новой приложухи
|
Цитата:
Цитата:
http://habrahabr.ru/post/207794/ http://habrahabr.ru/post/186666/ ну а лучше открыть проект на гибхабе и посмотреть его тесты :) visionmedia неплохо писал тесты: https://github.com/visionmedia/page..../test/tests.js а ещё лучше - послухать мнение других разработчиков о тестах :) |
Цитата:
|
Цитата:
Например, есть такая структура файлов и каталогов: Код:
pages var ProfilePage = require('profile-page'), QuestionPage = require('question-page'), UserBlock = require('user-block'), StatisticsBlock = require('statistics-block'), api = require('api'), cookie = require('cookie'), time = require('time'); в LMD для этого достаточно написать небольшой конфиг: { … modules: { '<%= file %>': 'modules/*.js' '<%= dir[0] %>-block': 'blocks/*/*.js' '<%= dir[0] %>-page': 'pages/*/*.js' }, … }Какой еще сборщик модулей так может? |
melky, я прочитал обе статьи и по читал те тесты на которые ты дал ссылку и пока вижу только 2 ошибки:
1. не правильно подписанные названия для тестов 2. плохо разбитые на группы ( т.е с помощью describe ) А что не так в самих тестах? Я просто не представляю что еще можно тестировать? |
Octane, из коробки не может. решается плагином. хотя если расширить функционал алисов (добавить возможность передачи функции.. или строки регвыра для конструктора RegExp в качестве ключа, например.), то можно и сделать из коробки
например, стало бы так: // module.exports.resolve.alias ... { '([^-])-page': 'pages/$1/$1.js' } alert( 'profile-page'.replace(new RegExp('([^-]+)-page'), 'pages/$1/$1.js' )); // pages/profile/profile.js годная фишка, спасибо, Octane. возьму на заметку. Цитата:
var ProfilePage = require('profile-page') абстракция от файловой структуры проекта, конечно, хорошая, но не пойму, почему логика идёт от частного (profile) к общему (page) :) Цитата:
но jasmine - BDD, значит нужно следовать принципам BDD: it ( "Show window", function ( ) { expect ( modal.show () ) .toBe ( true ); } ); it ( "Hide window", function ( ) { expect ( modal.hide () ) .toBe ( true ); } ); как ты проверил, что модальное окно скрыто \ показано ? уверен ли ты в том, что эти оба метода работают верно ? по BDD: Попробуй удалить класс модального окна и оставить только тесты. Они начнут проваливаться (перестанут проходить). Попробуй написать класс модального окна, чтобы все тесты начали проходить. Скорее всего, в методах hide и show будет такой код: Modal.prototype.show = Modal.prototype.hide = function () { return true }; так вот, тесты должны отражать спецификацию - написал код - все тесты проходятся - окей, забиваешь на код гвоздь и идёшь дальше. и не волнуешься о том, что что-то мог забыть - если ты что-то забыл, некоторые тесты должны проваливаться. с багами\фичами так же - пишешь сначала тест, потом код. тесты проходятся - ништяк, всё готово. понимаешь примерно, что делают тесты и какие они должны быть (в BDD)? хм, вообще пример с модальным окном плохой для тестирования. легче протестировать какое-нибудь математическое уравнение прямой (т.е. функцию), или факториал - то, что попроще. ![]() картинка относится к TDD , но вполне отражает суть. разница между TDD и BDD в том, какие сами тесты (синтаксис) и что они тестируют Цитата:
трудно сказать, что можно тестировать - легче сказать, что нельзя тестировать)) мне трудно представить, как тестировать внешний вид (интерфейс) сайта. вот наверное его и нельзя. |
Часовой пояс GMT +3, время: 08:36. |