我知道存根验证状态,模拟验证行为.
如何在PHPUnit中进行模拟以验证方法的行为?Phpunit没有验证方法(verify()),而且我不知道如何使moks成为PHPUnit.
在文档中,创建存根很好地解释了:
// Create a stub for the SomeClass class.
$stub = $this->createMock(SomeClass::class);
// Configure the stub.
$stub
->method('doSomething')
->willReturn('foo');
// Calling $stub->doSomething() will now return 'foo'.
$this->assertEquals('foo', $stub->doSomething());
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我正在验证状态,说回复一个答案.
如何创建模拟和验证行为的示例?
它们是 mysqli_result 的两个函数。
这样,查询到数据库的每一行?
并且这样对数据库只查询一次?
我不知道如何以最好的方式和最有效的方式做到这一点。
放例子:
1.-fetch_array():
$resultUsers = getAllUsers($db);
while($row = $resultUsers->fetch_array()){
echo $row['name'];
}
Run Code Online (Sandbox Code Playgroud)
2.- fetch_all():
$resultUsers = getAllUsers($db);
foreach ($resultUsers->fetch_all(MYSQLI_ASSOC) as $value) {
echo $value['name'] . "<br>";
}
Run Code Online (Sandbox Code Playgroud)
2.A.-
foreach (getAllUser($db)->fetch_all(MYSQLI_ASSOC) as $value) {
echo $value['name'] . "<br>";
}
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法,我希望你的帮助。
我的问题是我想返回从对象内部的 Doctrine 获得的一些数据JsonResponse。我用 a 获取数据QueryBuilder,如下所示:
$qb = $this->getDoctrine()->getRepository(User::class)->createQueryBuilder('u');
$data = $qb->getQuery()->getResult();
$JSONResponse = new JsonResponse();
$JSONResponse->setData($data);
Run Code Online (Sandbox Code Playgroud)
然而,里面的数据看起来是JsonResponse空的:
data: {
[],
[],
[],
[],
.....
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何才能以这种方式正确返回数据?
当其中一个测试失败时,可以在测试正在测试的内容的参数化中添加描述,快速了解测试失败的原因。
有时您不知道测试失败的原因(您必须查看代码)。通过每个测试的描述,您就可以知道。
例如。
@pytest.mark.parametrize( "num1, num2, expect", [
(2, 2, 4), # This test verifies that 2+2 = 4.
])
def test_sum(num1, num2, expect):
calc = Calc()
response = calc.sum(num1, num2)
assert expect == response
Run Code Online (Sandbox Code Playgroud)
如果测试失败,错误消息将显示:
src_test/calc.py::test_sum[19999997-200] FAILED
assert vo_result.code == expected_code
E AssertionError: assert 4 == 3
**The test checks if the numbers add up well.** Message invented
Run Code Online (Sandbox Code Playgroud)