2014-01-08 3 views
1

Я ищу для реализации «Yui Test» на своем веб-сайте, чтобы использовать методологию TDD. Я также установил Yuitest CLI (npm install -g yuitest).Yui Test - упорядочить файлы

Я не знаю, как организовать мои файлы, я думал оставить код js в моем файле «www/js/functions.js» и создать новый файл «www/js/tests.js», куда поставить мои тесты.

Проблема в том, что я не знаю, как подключать разные файлы. Я попытаюсь объяснить.

В моем файле 'WWW/JS/tests.js' Я этот код (пример на сайте):

var testCase = new Y.Test.Case({ 

    name: "TestCase Name", 

    //--------------------------------------------- 
    // Special instructions 
    //--------------------------------------------- 

    _should: { 
     error: { 
      testSortArray: true //this test should throw an error 
     } 
    }, 

    //--------------------------------------------- 
    // Tests 
    //--------------------------------------------- 

    testSortArray: function() { 
     sortArray(12); //this should throw an error 
    } 

}); 

и в моем '/ WWW/JS functions.js' файл я» ве этой функции:

function sortArray(array) { 
    if (array instanceof Array){ 
     array.sort(); 
    } else { 
     throw new TypeError("Expected an array"); 
    } 
} 

Очевидно, что это не работает, потому что, когда я запустить тест «yuitest WWW/JS/tests.js» он не видел мою функцию в «WWW/JS/functions.js» файл.

Очевидно, что если я переведу функцию из файла «www/js/functions.js» в файл «www/js/tests.js», он работает.

Но мне нужно оставить отдельные эти файлы. Какие-либо предложения?

Спасибо!

ответ

1

Я использую страницу tests.html, чтобы собрать все необходимые ресурсы и выполнить тесты.

так tests.html воля:

  • включают YUI
  • включают functions.js
  • включают tests.js
  • создать Y.Test.Suite, который включает в себя все мои тесты
  • позвоните Y.Test.Runner.add (mySuite)
  • создать Y.Test.Console для визуализации моих результатов
  • звонок Y.Test.Runner.бег();

Вы могли бы также, вероятно, использовать YUI загрузчик, чтобы загрузить свой functions.js тоже, но я не пробовал, что (в основном потому, что мой код тестируемого все модули YUI, поэтому загрузчик может laod и работать с их просто отлично)

0

Один из вариантов - использовать модули. Добавьте модуль в YUI и use в свой тест. При использовании пространств имен, это может выглядеть следующим образом:

www/js/functions.js В:

YUI.add('my-module', function (Y) { 

    Y.namespace('MyNamespace'); 

    Y.MyNamespace.SortArray = function(array) { 
     if (array instanceof Array){ 
      array.sort(); 
     } else { 
      throw new TypeError("Expected an array"); 
     } 
    } 
}); 

В www/js/tests.js:

YUI().use('test', 'my-module', function (Y) { 

    var testCase = new Y.Test.Case({ 

     name: "TestCase Name", 

     //--------------------------------------------- 
     // Tests 
     //--------------------------------------------- 

     testSortArray: function() { 
      Y.MyNamespace.SortArray(12); //this should throw an error 
     } 

    }); 

}); 

См Creating YUI Modules.

Чтобы Загрузчик знать о моем-модуль, посмотрите на этот пример, из the same page:

YUI.GlobalConfig: { 
    groups: { 
     mymodules: { 
      base: '/www/js/', 
      modules: { 
       'my-module': { 
        path: 'functions.js' 
       } 
      } 
     } 
    } 
}; 

Для опций конфигурации Loader, посмотрите на docs.

+0

IMHO, плохой способ ... я должен изменить два файла: модуль и тест. У меня уже есть файл с функциями. Я решил использовать Карму, Жасмин и Призрачный JS ... Удивительный! – Nothing