cpan Test::Nginx
Test::Nginx
Test::Nginx is a test framework
that drives test cases written for any
code running atop NGINX, and also, naturally, the NGINX core itself. It
is written in Perl because of the rich testing facilities and toolchain
already accumulated in the Perl world for years. Fortunately, the user
does not really need to know Perl for writing test cases atop this scaffold
since Test::Nginx
provides a very simple notation to present the test
cases in a specification-like format.
The simple test specification format, or language, used in Test::Nginx
is just a dialect of the more general testing language provided by the
Test::Base
testing module in the Perl world. In fact, Test::Nginx
is just a subclass
of Test::Base
in the sense of object-oriented programming. This means
that all the features offered by Test::Base
are available in Test::Nginx
and Test::Nginx
just provides handy primitives and notations that simplify
testing in the NGINX and OpenResty context. The core idea of Test::Base
is so useful that we have been using testing scaffolds based on Test::Base
in many different projects even including Haskell programs and Linux kernel
modules. Test::Nginx
is such an example we created for the NGINX and
OpenResty world. Detailed discussion of the Test::Base
framework itself
is beyond the scope of this book, but we will introduce the important features
of Test::Base
that are inherited by Test::Nginx
in the later sections.
Test::Nginx
is distributed via CPAN, the Comprehensive
Perl Archive Network, just like most of the other Perl libraries. If you
already have perl
installed in your system (many Linux distributions
ship with perl
by default), then you can install Test::Nginx
with the
following simple command:
For the first time that the cpan
utility is run, you may be prompted
to configure the cpan
utility to fit your requirements. If you are unsure
about those options, just choose the automatic configuration option (if
available) or just accept all the default settings.
Test::Nginx
provides several different testing classes for different
user requirements. The most frequently used one is Test::Nginx::Socket
.
The rest of this chapter will focus on this testing class and its subclasses.
We will use the names Test::Nginx
and Test::Nginx::Socket
interchangeably
from now on to mean the Test::Nginx::Socket
test module and its subclasses,
unless otherwise specified.
Note
|
There is actually another different testing scaffold called Test::Nginx ,
created by Maxim Dounin and maintained by the official NGINX team. That
testing module is shipped with the official
NGINX test suite and has no
relationship with our Test::Nginx except that both of these are meant
to test NGINX related code. The NGINX team’s Test::Nginx requires the
user to directly code in Perl to convey all the test cases, which means
that tests written for their Test::Nginx are not data driven and requires
decent knowledge about Perl programming.
|