小编Rod*_*ing的帖子

PHPUnit中的Mocks vs Stubs

我知道存根验证状态,模拟验证行为.

如何在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)

但在这种情况下,我正在验证状态,说回复一个答案.

如何创建模拟和验证行为的示例?

testing phpunit unit-testing mocking stubs

10
推荐指数
2
解决办法
7477
查看次数

fetch_array(MYSQLI_ASSOC) 或 fetch_all(MYSQLI_ASSOC) 最好用什么?

它们是 mysqli_result 的两个函数。

  • fetch_array():获取结果行。

这样,查询到数据库的每一行?

  • fetch_all():获取所有结果行。

并且这样对数据库只查询一次?

我不知道如何以最好的方式和最有效的方式做到这一点。

放例子:

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)

如果有更好的方法,我希望你的帮助。

php mysqli

5
推荐指数
1
解决办法
1万
查看次数

从 JsonResponse 对象内的 Doctrine 返回数据

我的问题是我想返回从对象内部的 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)

有谁知道我如何才能以这种方式正确返回数据?

php serialization doctrine symfony doctrine-orm

5
推荐指数
1
解决办法
3693
查看次数

使用 Pytest 的参数化添加测试功能的描述

当其中一个测试失败时,可以在测试正在测试的内容的参数化中添加描述,快速了解测试失败的原因。

有时您不知道测试失败的原因(您必须查看代码)。通过每个测试的描述,您就可以知道。

例如。

@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)

python pytest

2
推荐指数
1
解决办法
3915
查看次数