小编Tho*_*mas的帖子

PHPUnit:如何使用多个参数模拟多个方法调用?

我正在为使用PHPUnit的方法编写单元测试.我正在测试的方法在同一个对象上调用同一个方法3次,但使用不同的参数集.我的问题类似于这里这里提出的问题

其他帖子中提出的问题与只采用一个论点的模拟方法有关.

但是,我的方法需要多个参数,我需要这样的东西:

$mock->expects($this->exactly(3))
     ->method('MyMockedMethod')
     ->with($this->logicalOr($this->equalTo($arg1, $arg2, arg3....argNb),
                             $this->equalTo($arg1b, $arg2b, arg3b....argNb),
                             $this->equalTo($arg1c, $arg2c, arg3c....argNc)
         ))
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,因为equalTo()只验证一个参数.给它多个参数会引发异常:

PHPUnit_Framework_Constraint_IsEqual :: __ construct()的参数#2必须是数字

有没有办法对logicalOr具有多个参数的方法进行模拟?

提前致谢.

php tdd phpunit mocking

51
推荐指数
4
解决办法
4万
查看次数

去切片长度是容量-1,为什么?

考虑下面的go代码:

fruits := [4]string{"apple", "orange", "mango"}
tasty_fruits := fruits[1:3]
fmt.Println(len(tasty_fruits))
fmt.Println(cap(tasty_fruits))
fmt.Println(tasty_fruits)
Run Code Online (Sandbox Code Playgroud)

.OUPUTS:

2
3
[orange mango]
Run Code Online (Sandbox Code Playgroud)

我不明白为什么Tasty_fruits 3的容量,直觉上我会期望它是2,因为这是切片的长度?

如果tasty_fruits的容量为3,为什么:

tasty_fruits[2] = "nectarine"
Run Code Online (Sandbox Code Playgroud)

造成:

panic: runtime error: index out of range
Run Code Online (Sandbox Code Playgroud)

arrays go slice

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

标签 统计

arrays ×1

go ×1

mocking ×1

php ×1

phpunit ×1

slice ×1

tdd ×1