2015-11-17 3 views
3

Я использую Ember.Logger.error:Тестирование Ember.Logger.error утверждения

if (isInvalid) { 
    Ember.Logger.error('this is invalid'); 
} 

Я хочу, чтобы проверить его в QUnit:

assert.throws(() => myFunction(), /this is invalid/, 'error was thrown'); 

Но assert.throws не поймать ошибку , Это произойдет, если я заменил Ember.Logger.error на простой оператор throw, но, конечно, есть способ проверить зарегистрированные ошибки Ember. Кто-нибудь знает дорогу?

UPDATE:

Я сделал небольшой аддон, который добавляет эту способность QUnit. Вы можете получить его here.

+0

Что это за тест? Это компонент, контроллер, вспомогательный блок-тест? –

ответ

3

Хорошо, так что я сделал исследование, как это делается в Эмбер, и я видел, что это практика, чтобы проверить:

Вот пример теста функцию, которую вы могли бы использовать для проверки вызова Ember.Logger.error в контрольном модульном тесте:

/* global Ember */ 

import { demo } from '../../../helpers/demo'; 
import { module, test } from 'qunit'; 

module('Unit | Helper | demo'); 

test('catching log', function(assert) { 
    assert.expect(1); // define how many assertions we expect 

    const oldError = Ember.Logger.error; // store original error function in variable 

    Ember.Logger.error = function(message) { // monkey patch with our custom function 
    assert.equal(message, 'this is invalid', 'error was thrown'); // our assertion 
    }; 

    demo(); // actually call function 

    Ember.Logger.error = oldError; // restore original error function 
}); 
+0

Это отлично работает! Это немного многословно, поэтому я решил инкапсулировать его в пользовательское утверждение qunit. Следующий шаг - создать небольшой аддон, который даст любому приложению доступ к новому утверждению qunit, 'logs'. Кроме того, при поиске тестового эквивалента инициализатора я столкнулся с этим [вопросом] (https://github.com/rwjblue/ember-qunit/issues/140). Спасибо за участие! – nullnullnull

+0

Мир маленький. : D –

+0

На самом деле, есть ли эквивалент инициализатору в тестах ember qunit? Насколько я могу судить, нет. По крайней мере, для модульных тестов, которые не запускаются 'App.injectTestHelpers()'. – nullnullnull

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