我正在尝试使用codeception和他的Mock和Stub库运行测试。发生的事情是,当我试图用存根运行测试时,它引发了一个在我的实际类中实现的错误。
我认为存根是隔离测试和模拟真实对象的方法。为什么它叫我真正的方法?
<?php
class FirstDegreeTest extends \Codeception\TestCase\Test
{
/**
* @var \UnitTester
*/
protected $tester;
protected function _before()
{
$this->max_threads = 30;
$this->firstDegree = new AlThread\LoadControl\Measurer\FirstDegree($this->max_threads);
$sensor = Stub::make("AlThread\LoadControl\Sensor\LoadAvg", array("getSystemLoad", Stub::consecutive(0, 1, -3, 1.1, null)));
$this->firstDegree->setSensor($sensor);
}
public function testMeasure()
{
$this->assertEquals(30, $this->firstDegree->measure());
}
}
?>
所以当我运行代码欺骗(PHPcodeception.phar运行):
Time: 487 ms, Memory: 11.25Mb
There was 1 error:
---------
1) Test me (FirstDegreeTest::testMeasure)
[PHPUnit_Framework_Exception] rewind() expects parameter 1 to be resource, null given
#1 Codeception\Subscriber\ErrorHandler->errorHandler
#2 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:42
#3 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:55
#4 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:49
#5 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:61
#6 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:67
#7 /home/AlThread/src/LoadControl/Sensor/LoadSensor.php:10
#8 /home/AlThread/src/LoadControl/Measurer/LoadMeasurer.php:32
#9 /home/AlThread/tests/unit/FirstDegreeTest.php:31
#10 FirstDegreeTest->testMeasure
FAILURES!
Tests: 3, Assertions: 2, Errors: 1.
问题是:
[PHPUnit_Framework_Exception] rewind() expects parameter 1 to be resource, null given
回溯会一直持续到类LoadAVG的真正实现,在这里我真正调用了rewind()函数,很明显,一旦这个类没有合适的运行环境,就会引发一个错误。
会不会是我想Stubs的方式不对?
非常感谢你。
你给Stu做的参数b::错了应该是个关联数组
$sensor = Stub::make("AlThread\LoadControl\Sensor\LoadAvg", array("getSystemLoad"=>Stub::consecutive(0, 1, -3, 1.1, null)));
如何使用Spock截尾void方法?
我是Java初学者。我想在运行的Java线程对象中调用一个方法。它总是引发以下异常: 线程“AWT-EventQueue-0”java中出现异常。lang.NullPointerException:无法调用“Graphic\u handler.next()”,因为“this.this$0.grap”为null (代码已简化) 下面是我调用该方法的代码部分: 我试图在这里调用方法Next()和las
我试图对模型的对象调用方法来更新数据库中的特定资源,但当我在api url上发送POST请求时,会出现此错误 方法照明\数据库\雄辩\集合::保存不存在。 我也尝试调用方法,但同样的错误。 编辑代码: 第一行返回响应和正确响应。 和 我还试图调用或方法来删除资源,但它也会给出相同的错误 BadMethodCallException:方法Illumb\Database\Eloquent\Collec
我创建了一个静态变量来保存应用程序上下文,因为我要在课堂上的其他地方使用它。这个变量被分配到类的构造函数中,我得到了以下错误——“不要将Android上下文类放在静态字段中(静态引用MyClass,其中字段appContext指向上下文);这是内存泄漏(也会中断即时运行)[StaticFieldLeak]。” 下面是MyClass中的代码: 为了解决这个问题,我考虑将appContext作为弱引用
为什么mockito打电话为存根方法。 为什么它使一个实际调用func下当... then返回我已经检查了当做调试。
本文向大家介绍在Java中使用反射调用对象的方法,包括了在Java中使用反射调用对象的方法的使用技巧和注意事项,需要的朋友参考一下 可以使用java.lang.Class.getDeclaredMethods()方法调用对象的方法。此方法返回一个数组,其中包含具有公共,私有,受保护和默认访问权限的所有Method对象。但是,不包括继承的方法。 另外,如果类或接口没有方法,或者在Class对象中表示