作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对需要用户输入的组件进行单元测试。如何告诉 Test::More
使用我预定义的一些输入,这样我就不需要手动输入它了?
这就是我现在所拥有的:
use strict;
use warnings;
use Test::More;
use TestClass;
*STDIN = "1\n";
foreach my $file (@files)
{
#this constructor asks for user input if it cannot find the file (1 is ignore);
my $test = TestClass->new( file=> @files );
isa_ok( $test, 'TestClass');
}
done_testing;
最佳答案
以下最小脚本似乎有效:
#!/usr/bin/perl
package TestClass;
use strict;
use warnings;
sub new {
my $class = shift;
return unless <STDIN> eq "1\n";
bless {} => $class;
}
package main;
use strict;
use warnings;
use Test::More tests => 1;
{
open my $stdin, '<', \ "1\n"
or die "Cannot open STDIN to read from string: $!";
local *STDIN = $stdin;
my $test = TestClass->new;
isa_ok( $test, 'TestClass');
}
关于perl - 如何在Perl中伪造STDIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213986/
我是一名优秀的程序员,十分优秀!