小编Mil*_*ler的帖子

独立的Jasmine vs Karma - Jasmine

我是一般的测试新手,一直在教自己Jasmine.我试图理解在Karma中运行Jasmine和jQuery-Jasmine与运行Jasmine 之间的区别.Jasmine的教程没有解决使用Karma时所需的调整.

有人可以向我解释一下Karma-Jasmine与独立Jasmine的要求有何不同?它仍然需要规范运行器,文件结构是否仍然相同?

我正在测试DOM事件 - 很多点击处理程序 - 并且不了解如何模拟它.有人能概述一些基本想法吗?例如,如果我想在用户单击按钮后检查是否已将ap元素添加到div中,那么它在文件结构和函数中的工作方式如何?

谢谢.

jquery unit-testing jasmine karma-runner karma-jasmine

11
推荐指数
2
解决办法
1766
查看次数

如果在语句修饰符中声明变量,则发出警告

我刚刚通过以下代码行:

my $foo = $bar if $cond;
Run Code Online (Sandbox Code Playgroud)

我要解决这个问题,因为它当然会导致细微的错误.

是否有Perl版本,模块或pragma,如果达到这种类型的声明会发出警告?

目前我只是使用grep和PPI的组合扫描代码库来解决所有这些问题.到目前为止共发现了102个.但是,如果他们添加新的无效行,则自动警告其他程序员的方法将会有所帮助.

perl

10
推荐指数
1
解决办法
144
查看次数

向作为参数传递的 qr 模式添加“m”修饰符

我希望能够将“m”修饰符添加到传递给函数的正则表达式中。

以下测试脚本演示了我正在尝试做的事情

#!/usr/bin/env perl

use strict;
use warnings;
use v5.16.3;

use Test::More tests => 3;

my $no_m_modifier_re   = qr{^line1\n^line2};
my $with_m_modifier_re = qr{^line1\n^line2}m;

my $text = <<'EoM';
line1
line2
line3
EoM

unlike( $text, $no_m_modifier_re, 'Text will not match ^ that is equivalent to \A' );
like( $text, $with_m_modifier_re, 'Text will match ^ with m modifier' );

# This fails to add the m modifier to the subexpression
my $add_m_modifier_re = qr{(?m)$no_m_modifier_re};
#my $add_m_modifier_re = qr{(?m:$no_m_modifier_re)};    # Experimented other syntax, with …
Run Code Online (Sandbox Code Playgroud)

regex perl

9
推荐指数
1
解决办法
144
查看次数

Perl Net :: OAuth2示例代码

需要示例代码(是的,我已经通过CPAN文档)来验证使用 Net::OAuth2

我有以下内容:

  • 消费者密钥
  • 消费者的秘密
  • 访问密钥
  • 访问秘密

PS我相信一般来说,你提供消费者密钥和秘密并获得访问密钥和秘密,但在这种情况下,我已经拥有它们.

authentication perl oauth

8
推荐指数
1
解决办法
3665
查看次数

证明在循环中使用范围运算符不会使用额外的内存

Range运算符..的当前文档声明它不会为计数循环烧毁内存:

...范围运算符对于编写foreach (1..10)循环和对数组执行切片操作很有用.在当前实现中,当range运算符用作foreach循环中的表达式时,不会创建临时数组,但是当您编写类似这样的内容时,旧版本的Perl可能会烧掉大量内存:

    1.   for (1 .. 1_000_000) {
    2.       # code
    3.   }
Run Code Online (Sandbox Code Playgroud)

由于前面提到的早期实现for (MIN .. MAX),我仍然是专家,他们对使用计数循环持谨慎态度,因为他们认为它等同于:

my @temp_array = (MIN .. MAX);       # Needlessly using up memory
for (@temp_array) {
Run Code Online (Sandbox Code Playgroud)

与逻辑和内存效率更高:

for ($_ = MIN; $_ <= MAX; $_++) {    # Logical counting from MIN to MAX
Run Code Online (Sandbox Code Playgroud)

问题:

  • 有没有办法可以证明计数循环不会浪费内存?

  • 有谁知道哪个版本的Perl有内存问题以及何时修复?

我能够向自己证明,计数循环不会浪费内存使用下面的单行程序,如果实际创建一个临时数组,肯定会使我的系统崩溃.但是,如果有关于这个问题的更多结论性信息,那么我们就可以把这个老太太的故事放在一边.

$ perl -e 'for (1 .. 1_000_000_000_000_000) { print "$_\n"; last if $_ == 5 …
Run Code Online (Sandbox Code Playgroud)

perl loops

8
推荐指数
1
解决办法
257
查看次数

如何使基于Dist :: Zilla的Perl模块(或应用程序)将文件安装到/ etc /?

我维护多个Perl编写的(unix-ish)应用程序,其当前安装过程包括手动编写Makefile和安装配置文件/etc/.

我真的想切换他们的开发使用Dist::Zilla,但到目前为止我还没有找到任何Dist :: Zilla插件或功能,它允许我/etc/make install(或./Build install使用Module::Build而不是ExtUtils::MakeMaker)的情况下将给定文件放入正在安装我的应用程序的本地管理员.

使用pure ExtUtils::MakeMaker,我可以定义其他make目标,MY::postambleinstall目标通过depend { install => … }属性依赖于其中一个.做类似的事情,但通过dzil build,可能就足够了,但我会欣赏一种更明显的方式.

一种正交的方法是使应用程序不要求文件/etc/存在,但只是为了切换到Dist :: Zilla,实际代码似乎有很大变化,尽管我现在只想更改构建系统.

对于好奇:我目前想要切换到Dist :: Zilla的两个应用程序是xen-toolsunburden-home-dir.

perl installer configuration-files dist-zilla

8
推荐指数
1
解决办法
523
查看次数

移位和解除引用操作符有问题

我有一个关于如何->评估运算符左右两侧的问题.请考虑以下代码:

#! /usr/bin/perl

use strict;
use warnings;
use feature ':5.10';

$, = ': ';
$" = ', ';

my $sub = sub { "@_" };

sub u { shift->(@_) }
sub v { my $s = shift; $s->(@_) }

say 'u', u($sub, 'foo', 'bar');
say 'v', v($sub, 'foo', 'bar');
Run Code Online (Sandbox Code Playgroud)

输出:

u: CODE(0x324718), foo, bar
v: foo, bar
Run Code Online (Sandbox Code Playgroud)

我希望你和你的行为相同,但事实并非如此.在这些情况下,我总是假设perl评估了从左到右的事情.代码就像shift->another_method(@_)甚至shift->another_method(shift, 'stuff', @_)很常见.

如果第一个参数恰好是代码引用,为什么会中断?我在未定义/未记录的领域吗?

perl

7
推荐指数
1
解决办法
140
查看次数

Date :: Manip Not Installing

我在尝试安装Date::Manip模块时不断收到错误消息.任何Perl专家都知道我可以尝试什么?我正在尝试的命令是

perl -MCPAN -e "install Date::Manip" 
Run Code Online (Sandbox Code Playgroud)

Perl版本是5.20,它一直试图安装的Date :: Manip的版本是6.45,但它回来时"Make have some problems"和"No archive in archive".它确实提示我手动安装文件,但我不知道如何做到这一点.这是它说的......

Could not find file 'sulbeck@heather.osg.ufl.edu.2024:1399465428' in memory at C:\Strawberry\perl\lib/CPAN/Tarzip.pm line 408.

Making symbolic link 'C:\STRAWB~1\cpan\build\tmp-3576\Date-Manip6.45\lib\Date\Manip\.#Changes6.pod' to 'sulbeck@heather.osg.ufl.edu.2024:1399465428' failed at C:\Strawberry\perl\lib/CPAN/Tarzip.pm line 408.

Could not untar with Archive::Tar  SBECK/Date-Manip-6.45.tar.gz

Had problems unarchiving. please build manually. Stopping: 'install' failed for 'Date:Manip
Run Code Online (Sandbox Code Playgroud)

perl date

7
推荐指数
1
解决办法
3345
查看次数

\*DATA和*DATA之间的区别

每当我想模拟输入和输出到文件句柄时,我通常会分别使用引用DATASTDOUT:

use strict;
use warnings;
use autodie;

#open my $infh, '<', 'infile.txt';
my $infh = \*DATA;

#open my $outfh, '>', 'outfile.txt';
my $outfh, \*STDOUT;

print $outfh <$infh>;

__DATA__
Hello World
Run Code Online (Sandbox Code Playgroud)

输出:

Hello World
Run Code Online (Sandbox Code Playgroud)

然而,在鲍罗丁最近的回答中,证明实际上没有必要参考.相反,简单的分配就足够了:

my $infh = *DATA;
Run Code Online (Sandbox Code Playgroud)

因此,我创建了以下脚本来比较和对比这两种方法之间的区别:

use strict;
use warnings;

use Fcntl qw(:seek);

# Compare Indirect Filehandle Notation
my %hash = (
    '\*DATA' => \*DATA,
    '*DATA'  => *DATA,
);

my $pos = tell DATA;

my $fmt = "%-8s %-22s %-7s %s\n"; …
Run Code Online (Sandbox Code Playgroud)

perl

7
推荐指数
1
解决办法
202
查看次数

Mojo::UserAgent - 在解码前检查 Content-Encoding 标头

我正在尝试用于Mojo::UserAgent验证应用程序的 gzip 压缩(内容编码)。

不幸的是,这个 UA 似乎默默地解码了内容并删除了 Content-Encoding 标头后记。

以下是我的最小示例

#!/usr/bin/env perl

use strict;
use warnings;

use Test::More tests => 3;

use Mojo::UserAgent;     # Version 8.26

my $ua = Mojo::UserAgent->new();

# As documented: https://docs.mojolicious.org/Mojolicious/Guides/Cookbook#Decorating-follow-up-requests
$ua->once(
    start => sub {
        my ( $ua, $tx ) = @_;
        $tx->req->headers->header( 'Accept-Encoding' => 'gzip' );
    }
);

my $tx = $ua->get('https://www.mojolicious.org');

is( $tx->req->headers->header('Accept-Encoding'), 'gzip', qq{Request Accept-Encoding is "gzip"} );

ok( $tx->res->is_success, "Response is success" );

# The following assertion fails.
# My theory …
Run Code Online (Sandbox Code Playgroud)

perl mojolicious mojo-useragent

7
推荐指数
1
解决办法
132
查看次数