2017-02-21 4 views
-1

Во время обучения электрон, я решил, что также хотел бы обучить методам тестирования в JavaScript. У меня есть следующий код:Mocha/Sinon - Испытания модуля тестирования в JavaScript

const winston = require('winston'); 
const AutoLaunch = require('auto-launch'); 

const launchFunction = (mb) => { 
    const autolaunch = new AutoLaunch(); 

    autolaunch 
    .isEnabled() 
    .then((isEnabled) => { 
     if (isEnabled) { 
     return; 
     } 
     autolaunch.enable(); 
    }) 
    .catch((err) => { 
     winston.error(err); 
    }); 
}; 

Я хотел бы утверждать, если autolaunch.enabled() правильно срабатывает при определенном условии, и у меня есть много проблем с написанием какой-либо тест, который не заставит меня создать заглушка с точной копией функции от затем(). Существует вариант, который, возможно, что-то не так в этом дизайне этого решения - я могу (и хотел бы) изменить код, чтобы сделать его более проверяемым. Как я должен справиться с этой проблемой без ущерба для проверки кода?

Я использую мокко и Sinon, но я не чувствую себя очень привязан к этим инструментам

+1

Пожалуйста, взгляните на [chai-as-обещанный] (http://chaijs.com/plugins/chai-as-promised/), чтобы проверить обещания. –

ответ

0

Я хотел бы попробовать более функциональный подход. Закройте крышку под вопросом и проверьте ее отдельно.

function enableWhenNeeded(autolaunch, isEnabled) { 
     if (isEnabled) { 
     return; 
     } 
     autolaunch.enable(); 
} 

autolaunch 
    .isEnabled() 
    .then(curry(enableWhenNeeded, autolaunch)) 
    .catch((err) => { 
     winston.error(err); 
    }); 

Для целей примера я сделал функцию Карри(), но я думаю, что есть, по крайней мере, тридцать пять JavaScript рамки, которые обеспечивают один.

Это всегда вопрос, стоит ли тестировать этот код; если AutoLaunch является третьей стороной, зачем ее тестировать?

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