Хорошо, я, в конце концов, узнал, что babel
сам по себе не делает полипол. В том числе скрипт <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
решил эту проблему для меня.
Другой общий прием для сценариев поблочного тестирования должен перенести тело их кода в блок 'вызывающей стороны':
#!/usr/bin/perl
use strict;
use warnings;
unless (caller) {
# startup code
}
sub foo { ... }
, Когда выполнено из командной строки, крона, сценария удара, и т.д., это обычно работает. Однако, если Вы загружаете его из другой программы Perl, "если (вызывающая сторона) {...}" Код не работает. Затем в Вашей тестовой программе, объявите пространство имен (так как сценарий, вероятно, выполняет код в пакете main::), и сделайте сценарий.
#!/usr/bin/perl
package Tests::Script; # avoid the Test:: namespace to avoid conflicts
# with testing modules
use strict;
use warnings;
do 'some_script' or die "Cannot (do 'some_script'): $!";
# write your tests
'делают' является более эффективным, чем оценка и довольно чистым для этого.
Другой прием для сценариев тестирования должен использовать , Ожидают . Это более чисто, но также более твердо использовать, и это не позволит Вам переопределить что-либо в рамках сценария, если необходимо копировать что-нибудь.
Принятие Вас не имеет никаких проблем безопасности, переносит его в sub {...} И оценка это:
use File::Slurp "read_file";
eval "package Script; sub {" . read_file("script") . "}";
is(Script::foo(), "foo");
(заботящийся, что оценка не в пределах никакого lexicals, который был бы закрыт сценарием).
Ahh, старое, "как делают меня модульный тест программа" вопрос. Самый простой прием должен поместить это в Вашу программу, прежде чем это начнет делать вещи:
return 1 unless $0 eq __FILE__;
__FILE__
текущий исходный файл. $0
название запущенной программы. Если они - то же, Ваш код выполняется как программа. Если они отличаются, это загружается как библиотека.
Этого достаточно, чтобы позволить Вам запустить поблочное тестирование подпрограммы в Вашей программе.
require "some/program";
...and test...
Следующий шаг должен переместить весь код вне подпрограммы в main
, затем можно сделать это:
main() if $0 eq __FILE__;
и теперь можно протестировать основной () точно так же, как любая другая подпрограмма.
После того как это сделало Вас, может начать собираться выгонять подпрограммы программы с квартиры в их собственные реальные библиотеки.