我有一个 php 项目,它有作曲家依赖项,这些依赖项在我的单元测试的代码路径中固有地进行了测试。这是我的示例代码:
<?php
// where FooBar is a composer package but I'm purposely typing it incorrectly here
use fooBaR
public function appendNameToWords(array $words, $name)
{
$start = microtime(true);
$newWords = array_map(function($word){
return $word . $name;
}, $words);
// logs the diff between start and end time
FooBar::logTimer($start);
return $newWords;
}
我的测试只是测试方法,但当然执行源代码中的行FooBar::logTimer
。问题是如果我错误地输入了类FooBar
fooBaR
,我希望我的测试会失败。不幸的是,特拉维斯构建正在通过...但我不清楚为什么。
.travis.yml
文件:
language: php
php:
- 5.6
install: script/install
script:
- script/test
关于可能出错的任何想法?
涉及类名时不区分大小写。如果您的代码声明了一个名为 Foo
的类,并且执行了此定义,则还可以实例化任何其他大小写样式,如 foo
或 fOO
。
保留触发自动加载的情况(即 PHP 第一次遇到类名时),如果该大小写样式与区分大小写的文件名不匹配,则使用该类将失败。
我认为以正确的大小写风格编写类是一个不应该用单元测试来测试的问题。这是一个无法在您自己的代码中解决的问题 - 如果您使用知道所有可以使用的类的强大 IDE,则基本上不存在。
另外:您的问题未提供演示该问题的代码。它包含的代码可能不会执行您认为的功能。