是否有推荐的方法在Laravel 5中进行单元测试javascript?我正在使用jQuery框架来执行搜索自动完成任务(下面的代码)。我想要测试很多块,但我不确定如何最好地测试Laravel 5中的所有内容。感谢任何帮助。
$ perl -V
Summary of my perl5 (revision 5 version 14 subversion 4) configuration:
Platform:
osname=cygwin, osvers=1.7.35(0.28653), archname=cygwin-thread-multi
uname='cygwin_nt-6.3 cygwin 1.7.35(0.28653) 2015-02-16 13:03 x86_64 cygwin '
config_args='-d -e -Dprefix=/usr -Dmksymlinks -Dusethreads -Darchname=x86_64-cygwin-threads -Dlibperl=cygperl5_14.dll -Dcc=gcc -Dld=g++ -Accflags=-ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/mnt/share/maint/perl.x86_64/build=/usr/src/debug/perl-5.14.4-3 -fdebug-prefix-map=/mnt/share/maint/perl.x86_64/src/perl-5.14.4=/usr/src/debug/perl-5.14.4-3 -fwrapv'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/mnt/share/maint/perl.x86_64/build=/usr/src/debug/perl-5.14.4-3 -fdebug-prefix-map=/mnt/share/maint/perl.x86_64/src/perl-5.14.4=/usr/src/debug/perl-5.14.4-3 -fwrapv -fno-strict-aliasing -fstack-protector',
optimize='-O3',
cppflags='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/mnt/share/maint/perl.x86_64/build=/usr/src/debug/perl-5.14.4-3 -fdebug-prefix-map=/mnt/share/maint/perl.x86_64/src/perl-5.14.4=/usr/src/debug/perl-5.14.4-3 -fwrapv -fno-strict-aliasing -fstack-protector'
ccversion='', gccversion='4.9.2', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='g++', ldflags =' -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib /lib
libs=-lgdbm -ldb -ldl -lcrypt -lgdbm_compat
perllibs=-ldl -lcrypt
libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=cygperl5_14.dll
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -L/usr/local/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_PRESERVE_IVUV
PERL_USE_SAFE_PUTENV USE_64_BIT_ALL USE_64_BIT_INT
USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
USE_REENTRANT_API
Locally applied patches:
rurban/0c612ce82 Fix building static extensions on cygwin, -UUSEIMPORTLIB
perl.cygwin_autorebase Rebase DLL after building (skip for cygport builds)
v5.14.0-RC2-6-gfc6f691 skip testing cygwin utf8 readdir() with Win32 ANSI API
v5.14.0-RC2-7-g3877b86 Fix test 50 on cygwin: \WINDOWS
v5.14.0-RC2-10-gd22b5bd revert +x global.sym from 3691eaa79cc6a
v5.15.0-579-g8375c93 Export store_cop_label for the perl compiler
v5.15.3-232-g1bac5ec sv.c: S_anonymise_cv_maybe UTF8 cleanup.
v5.15.7-75-g803e389 CYG17 utf8 paths
v5.15.7-302-g5bc802d Revise perlcygwin.pod for cygwin-1.7
v5.15.7-303-g286f819 add Cygwin::sync_winenv [perl #110190]
v5.19.8-494-g6cc44f6 avoid a "FILE" name conflict with cygwin's wchar.h
v5.19.8-496-g3383030 [perl #120936] op/taint.t handling of no ipcsysv on cygwin
v5.19.8-509-g288d0d9 cygwin doesn't implement $^E (except as a read of $!)
v5.21.4-548-g860874c wrap the failing call_checker test in an eval and TODO it
Built under cygwin
Compiled at Feb 17 2015 21:41:24
@INC:
/usr/lib/perl5/site_perl/5.14/x86_64-cygwin-threads
/usr/lib/perl5/site_perl/5.14
/usr/lib/perl5/vendor_perl/5.14/x86_64-cygwin-threads
/usr/lib/perl5/vendor_perl/5.14
/usr/lib/perl5/5.14/x86_64-cygwin-threads
/usr/lib/perl5/5.14
.
答案 0 :(得分:5)
Laravel(或任何其他后端框架/语言/平台)的选择完全无关紧要。这纯粹是前端代码。因此,您需要使用前端测试工具。
然而,甚至在您开始考虑对此代码进行单元测试之前,您需要进行一些重新编码,以便它实际上可以在单元中进行测试。事实上,你有一个巨大的整体代码blob,根本无法进行单元测试。您需要将功能提取到离散函数中;越短越好。
完成后,我建议您进行测试的最佳起点是QUnit。这是由jQuery基础开发的单元测试框架,用于测试jQuery本身。由于您的代码将jQuery作为依赖项,我建议这可能是最好的起点。但是,JavaScript还有许多其他测试框架,您可能也想调查其中的一些。
请记住,UI代码(大多数前端JavaScript都是如此)很难为高质量的单元测试编写代码。您可能会发现功能测试 - 即通过浏览器自动进行最终用户测试 - 将为您提供更好的服务。 (实际上,你应该考虑进行这种测试,即使你也为JS代码编写单元测试)。为此,您需要一个用于浏览器的自动化工具。最着名的是Selenium,但您可能还想查看Sahi和PhantomJS。