我在PostgreSQL系统上返回布尔值的查询:
my $sth = $dbh->prepare("select 'f'::boolean");
$sth->execute;
my @vals = $sth->fetchrow_array;
Run Code Online (Sandbox Code Playgroud)
根据DBD :: Pg文档,
PostgreSQL的当前实现返回“ t”为真,“ f”为假。从Perl的角度来看,这是一个非常不幸的选择。因此,DBD :: Pg以Perlish方式转换BOOL数据类型的结果:'f'变为数字0,'t'变为数字1。这样,应用程序不必检查特定于数据库的返回值数据类型为BOOL,因为Perl将0视为false,将1视为true。您可以根据需要将pg_bool_tf属性设置为true值,以将值更改回't'和'f'。
因此,只要pg_bool_tf返回0,它就应该返回0。但是,在JSON :: XS(和纯JSON)的过程中,会将返回的0解释为字符串:
use JSON::XS qw(encode_json);
my $options =
{
layout => 0,
show_widget_help => $vals[0] // 1,
};
die encode_json($options);
Run Code Online (Sandbox Code Playgroud)
...死于:
{“ layout”:0,“ show_widget_help”:“ 0”}
...那很好,除了我的JavaScript在那里期望布尔值,并且非空字符串“ 0”被评估为true。为什么后一个引用0,而前一个引用不呢?
根据JSON :: XS docs,这是一个主要功能:
往返完整性
当仅使用JSON支持的数据类型序列化perl数据结构时,反序列化的数据结构在Perl级别上是相同的。(例如,字符串“ 2.0”不会因为看起来像数字而突然变成“ 2”)。对此有一些例外,请阅读下面的“映射”部分以了解这些内容。
...表示:
简单的Perl标量(不是引用的任何标量)是最难编码的对象:JSON :: XS将未定义的标量编码为JSON空值,在编码为JSON字符串之前在字符串上下文中最后使用过的标量,以及其他任何数值。
但是我从不在字符串上下文中使用@vals [0]。也许DBD :: Pg在返回它之前将其布尔值0用作字符串?
这似乎引发了另一个问题的一些对话,我认为值得转入自己的问题.
DRY原则似乎是我们解决维护问题的首选武器,但是测试代码的维护又如何呢?是否适用相同的经验法则?
开发人员测试社区中的一些强烈声音认为设置和拆卸是有害的,应该避免......仅举几例:
实际上,由于这个原因,xUnit.net已经完全从框架中删除了它们(虽然有办法解决这种自我限制).
你有什么经验吗?设置/拆卸是否会受损或有助于测试可维护性?
更新:像JUnit4或TestNG(@ BeforeClass,@ BeforeGroups等)中提供的更细粒度的构造会有所作为吗?
是否有任何库或方法来模拟C#中的文件系统来编写单元测试?在我目前的情况下,我有方法检查某个文件是否存在并读取创建日期.我将来可能需要更多.
背景:假设我有以下显然不正确的PHP:
try{
$vtest = '';
print(array_pop($vtest));
}catch(Exception $exx){}
Run Code Online (Sandbox Code Playgroud)
为了使用array_pop,$ vtest显然应该是一个数组,而不是一个字符串.然而,当我运行此代码时,会显示警告.我不希望这样,我只是希望代码无声地失败.
问题:与其他语言相比,PHP try-catch是否有一些特殊之处导致这种情况无效?
免责声明: 仅供参考,确实有其他方法可以在PHP中处理这种情况,但这些都是不可取的.这里的目标是避免:
"签名"技巧:
$vtest = '';
print(@array_pop($vtest)); // <-- would like to avoid this
Run Code Online (Sandbox Code Playgroud)
类型铸造:
$vtest = '';
$vtest = (array)$vtest;
print(array_pop($vtest));
Run Code Online (Sandbox Code Playgroud) 我想使用Windows FTP命令提示符在网络上FTP一些文件,我想从我已经为另一个相关应用程序设置的注册表项中检索FTP参数.
有没有办法直接从注册表中直接读取这些参数作为传递值到FTP命令?
我正在尝试创建我的第一个WCF服务.
我已经创建了该服务,现在我正试图从asp.net(vb)网站上调用它,我尝试添加一个Web引用并使用scvutil.exe来使用该服务.
到目前为止都没有奏效.它不是让我在我的代码中声明服务.如果有人能指出我如何在ASP.Net网站上使用WCF服务的一个很好的教程.
我发现了很多关于如何在AJAX或Silverlight或windows应用程序中使用它们,但在一个普通的旧网站上没有使用它.
如何在apache中禁止以下url;
main/index.php?site=ing
我试过以下几点;
RewriteRule ^main/index.php?site=ing - [F]
但没有运气......
unit-testing ×3
java ×2
mocking ×2
apache ×1
arrays ×1
c# ×1
command-line ×1
dbi ×1
dry ×1
exception ×1
facebook ×1
fbjs ×1
fixtures ×1
ftp ×1
javascript ×1
json ×1
mockito ×1
mod-rewrite ×1
no-framework ×1
perl ×1
php ×1
query-string ×1
reflection ×1
registry ×1
runtime ×1
tree ×1
try-catch ×1
wcf ×1