Каковы некоторые инструменты покрытия кода для Perl?

Каждый объект связан с прототипом объекта. При попытке получить доступ к объекту, который не существует, JavaScript будет выглядеть в объекте прототипа объекта для этого свойства и вернуть его, если он существует.

Свойство prototype конструктора функции относится к объекту прототипа всех экземпляров, созданных с помощью этой функции при использовании new.


В первом примере вы добавляете свойство x в каждый экземпляр, созданный с помощью функции A.

var A = function () {
    this.x = function () {
        //do something
    };
};

var a = new A();    // constructor function gets executed
                    // newly created object gets an 'x' property
                    // which is a function
a.x();              // and can be called like this

Во втором примере вы добавляете свойство объекта-прототипа, к которому указывают все экземпляры, созданные с A.

var A = function () { };
A.prototype.x = function () {
    //do something
};

var a = new A();    // constructor function gets executed
                    // which does nothing in this example

a.x();              // you are trying to access the 'x' property of an instance of 'A'
                    // which does not exist
                    // so JavaScript looks for that property in the prototype object
                    // that was defined using the 'prototype' property of the constructor

В заключение, в В первом примере копия функции присваивается каждому экземпляру. Во втором примере одна копия функции используется всеми экземплярами.

18
задан brian d foy 17 November 2008 в 11:00
поделиться

4 ответа

Да, Devel:: Покрытие является способом пойти.

, Если Вы разрабатываете модуль и используете Модуль:: Сборка для управления установкой Вы даже имеете testcover цель:

 perl Build.PL
 ./Build testcover

, Который выполняет целый набор тестов и делает объединенный отчет о покрытии в хорошем HTML, где можно просмотреть модули и наблюдать их покрытие.

24
ответ дан 30 November 2019 в 05:50
поделиться

Как обычно, CPAN является Вашим другом: Взгляните на Devel:: Покрытие

28
ответ дан 30 November 2019 в 05:50
поделиться

Moritz обсуждает, как модули создали с Модулем:: Сборка может использовать Devel:: Покройте легко.

Для использования модулей ExtUtils:: MakeMaker, дополнительный модуль существует для вызова той же функциональности. Добавление следующего кода перед вызовом к WriteMakefile ():

eval "use ExtUtils::MakeMaker::Coverage";
if( !$@ ) {
    print "Adding testcover target\n";
}

... позволит, для выполнения команды 'делает testcover' и имеет Devel:: Покрытие выполняет свое волшебство.

5
ответ дан 30 November 2019 в 05:50
поделиться

Как отмечено, Devel:: Покрытие является Вашим другом, но Вы захотите погуглить для него, также. Это - документация, немного редко и если Вы измените свою среду радикально, то необходимо будет переустановить его, потому что это создает Devel:: Покрытие:: Inc с набором информации вытянул от Вашей среды в то время, когда Вы устанавливаете его. Это вызвало много проблем для нас на работе, поскольку у нас есть общая среда CPAN и если один разработчик устанавливает Devel:: Покрытие и другой разработчик пытаются выполнить его, странный (и неправильный), результаты распространены.

при использовании этого модуля, также проверьте Devel:: CoverX:: Покрытый . Этот модуль получит большую часть информации который Devel:: Покрытие выбрасывает. Это очень удобно.

12
ответ дан 30 November 2019 в 05:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: