2013-06-19 3 views
1

Я пытался написать некоторые модульные тесты javascript, используя requirejs и jsTestDriver intellij plugin. Когда я запускаю их в среде IDE, у меня нет ошибки, даже если есть некоторые. Я вижу их только при открытии консоли браузера. Удалось ли кому-нибудь сделать плагин IDE для отображения сбоев в требуемой функции? Мой код ниже и некоторые снимки экрана, иллюстрирующие мою проблему.JsTestDriver утверждает при использовании requirejs в intellij

TestCase("Collections", { 
    "test User Collection": function() { 
     require(['lib/underscore', 'lib/backbone', 'app/user', 'app/collections'], 
      function (_, Backbone, user, appCollections) { 
       assertNotUndefined('Users must be defined', appCollections.users); 
       assertTypeOf('Users must be backbone collection', typeof Backbone.Collection, appCollections.users); 
       assertTypeOf("Users' model must be a user", typeof Backbone.Model, appCollections.users.model); 
      }); 
    } 
}); 

Intellij jsTestDriver plugin test result

My browser console

+0

JS-тест-драйвер и requirejs охватываемые здесь - HTTP://stackoverflow.com/questions/12482072/is-it-possible-to-run-js-test-driver-tests-that-uses-requirejs-modules. Вы должны понимать, что тест, который вы написали, вероятно, является асинхронным, и поэтому js-test-driver, вероятно, не знает, что тест не был запущен до того, как будет возвращен метод тестирования. –

+0

Спасибо за ваш ответ. Это фактически async, потому что, когда вы добавляете инструкцию сразу после функции require, она выполняется перед любой инструкцией внутри функции require. Есть ли какое-то значение, чтобы дождаться окончания всего исполнения? Ссылка в вашем комментарии не касается этой проблемы с асинхронным доступом. –

+0

Возможно, эта страница поможет - http://code.google.com/p/js-test-driver/wiki/AsyncTestCase. –

ответ

1

Я не проверял, но это может вам начать:

var CollectionsTest = AsyncTestCase('Collections'); 

CollectionsTest.prototype.testIt = function(queue) { 

    queue.call('Step 1', function(callbacks) { 

    function test1(_, Backbone, user, appCollections) { 
     assertNotUndefined('Users must be defined', appCollections.users); 
     assertTypeOf('Users must be backbone collection', typeof Backbone.Collection, appCollections.users); 
     assertTypeOf("Users' model must be a user", typeof Backbone.Model, appCollections.users.model); 
    } 

    var onModulesLoaded = callbacks.add(test1); 

    require(['lib/underscore', 'lib/backbone', 'app/user', 'app/collections'], onModulesLoaded); 

    }); 

}; 
+0

Спасибо, это работает так, как ожидалось, и именно так я и искал. –

 Смежные вопросы

  • Нет связанных вопросов^_^