Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #281 (permalink)  
Старый 03.08.2014, 12:50
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Не могу понять как эти штуки работают
https://github.com/kobezzza/Collecti...orage.es6#L334

it не начнёт выполняться пока beforeEach не выполнится, т.е. не вызовет done. С afterEach тоже самое, только после выполнений.
__________________
kobezzza
code monkey
Ответить с цитированием
  #282 (permalink)  
Старый 03.08.2014, 21:05
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

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();

    } );

});
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 04.08.2014 в 01:53.
Ответить с цитированием
  #283 (permalink)  
Старый 03.08.2014, 22:33
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от cyber
теперь я понял почему нужно писать тесты
но ты не понял , как их писать и зачем
Ответить с цитированием
  #284 (permalink)  
Старый 04.08.2014, 00:12
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

melky где по читать можно?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #285 (permalink)  
Старый 04.08.2014, 00:45
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Дайте мне гениальную идею для новой приложухи
__________________
Научу себя плохому
Ответить с цитированием
  #286 (permalink)  
Старый 04.08.2014, 08:51
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от l-liava-l Посмотреть сообщение
Дайте мне гениальную идею для новой приложухи
нормальный, не косой PopcornTime. это single page webapp

Сообщение от cyber Посмотреть сообщение
melky где по читать можно?
как-то так:
http://habrahabr.ru/post/207794/
http://habrahabr.ru/post/186666/

ну а лучше открыть проект на гибхабе и посмотреть его тесты

visionmedia неплохо писал тесты:

https://github.com/visionmedia/page..../test/tests.js

а ещё лучше - послухать мнение других разработчиков о тестах
Ответить с цитированием
  #287 (permalink)  
Старый 04.08.2014, 14:11
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от melky
а ещё лучше - послухать мнение других разработчиков о тестах
Поделишься своим?)
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #288 (permalink)  
Старый 05.08.2014, 13:15
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от melky
глянь brunch и webpack, настаиваю) не теряй на browserify время
Не нашел ни в одном возможности автоматически именовать модули, как в LMD.
Например, есть такая структура файлов и каталогов:
Код:
pages
|–– profile
|   |––index.js
|–– question
    |––index.js

blocks
|–– user
|   |–– index.js 
|–– statistics
    |–– index.js

modules
|–– api.js
|–– cookie.js
|–– time.js
и мы хотим подключать модули следующим образом:
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'
    },
    …
}
Какой еще сборщик модулей так может?
Ответить с цитированием
  #289 (permalink)  
Старый 05.08.2014, 13:40
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

melky, я прочитал обе статьи и по читал те тесты на которые ты дал ссылку и пока вижу только 2 ошибки:
1. не правильно подписанные названия для тестов
2. плохо разбитые на группы ( т.е с помощью describe )

А что не так в самих тестах? Я просто не представляю что еще можно тестировать?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #290 (permalink)  
Старый 05.08.2014, 16:11
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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. возьму на заметку.

Сообщение от Octane
Какой еще сборщик модулей так может?
зачем так вообще делать ?
var ProfilePage = require('profile-page')

абстракция от файловой структуры проекта, конечно, хорошая, но не пойму, почему логика идёт от частного (profile) к общему (page)


Сообщение от cyber Посмотреть сообщение
melky, я прочитал обе статьи и по читал те тесты на которые ты дал ссылку и пока вижу только 2 ошибки:
1. не правильно подписанные названия для тестов
2. плохо разбитые на группы ( т.е с помощью describe )
А что не так в самих тестах?
угумс.

но 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 в том, какие сами тесты (синтаксис) и что они тестируют

Сообщение от cyber Посмотреть сообщение
Я просто не представляю что еще можно тестировать?
ты когда работу сделаешь, открываешь браузер и смотришь на результат - что ты делаешь? тестируешь. в автоматизированном тестировании ты перекладываешь работу по тестированию с себя на комп.

трудно сказать, что можно тестировать - легче сказать, что нельзя тестировать))

мне трудно представить, как тестировать внешний вид (интерфейс) сайта. вот наверное его и нельзя.

Последний раз редактировалось melky, 05.08.2014 в 16:53.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3448 03.07.2023 09:47
React'а тред melky Оффтопик 246 13.11.2016 08:07
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Смешных историй тред monolithed Оффтопик 11 04.03.2015 04:20
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50