用JAVA编程验证intValue()返回值是不是有四舍五入?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JAVA编程验证intValue()返回值是不是有四舍五入?相关的知识,希望对你有一定的参考价值。
bigDecimal = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);//保留两位小数且向上进位的四舍五入,四舍五入后要重新赋值,不仅只setScale. 参考技术A 按你的描述应该是会回滚的,我用的是注解方式不知道跟xml配置差别大不大,以下是我的配置方式
@transactional(propagation=propagation.requires_new,rollbackfor=exception.class)
会不会是异常定义得不够广,你换成exception试试!
用 phpunit 模拟 symfony 安全,返回空值而不是布尔值(不使用预言)
【中文标题】用 phpunit 模拟 symfony 安全,返回空值而不是布尔值(不使用预言)【英文标题】:Mocking symfony security with phpunit, return null value instead of bool (not using prophecy) 【发布时间】:2021-08-07 21:57:54 【问题描述】:我有一个验证器,它调用 symfony 安全组件的多个方法。
我正在用 phpunit 模拟它。
getUser 工作正常,但我似乎无法使用 isGranted 返回布尔值。
它仅适用于willReturn(true)
。
如果我使用will($this->returnValueMap($map))
,它会说:
TypeError: Return value of Mock_Security_ccdbfb27::isGranted() must be of the type bool, null returned
如果我使用willReturn($this->returnValueMap($map))
,我会得到:
Method isGranted may not return value of type PHPUnit\Framework\MockObject\Stub\ReturnValueMap, its return declaration is ": bool"
如果我尝试使用回调,也会出现同样的问题。
private function getValidator(string $loggedUserRole, bool $expectsViolation)
$map = [
['ROLE_ADMIN', $loggedUserRole === 'ADMIN'],
['ROLE_MANAGER', ($loggedUserRole === 'ADMIN' || $loggedUserRole === 'MANAGER')],
];
$security = $this->createMock(Security::class);
$security
->method('getUser')
->willReturn($loggedUserRole === 'ANONYMOUS'? null : (new User()));
$security
->expects($this->any())
->method('isGranted')
->will($this->returnValueMap($map));
$validator = new ValidatorClass($security);
$context = $this->getContext($expectsViolation);
$validator->initialize($context);
return $validator;
【问题讨论】:
【参考方案1】:我遇到了类似的问题。
“isGranted”方法有第二个输入参数(主题),默认为“null”。您必须将此作为第二个值包含在参数映射中,第三个将作为结果。
所以在你的情况下:
$map = [
['ROLE_ADMIN', null, $loggedUserRole === 'ADMIN'],
['ROLE_MANAGER', null, ($loggedUserRole === 'ADMIN' || $loggedUserRole === 'MANAGER')],
];
【讨论】:
以上是关于用JAVA编程验证intValue()返回值是不是有四舍五入?的主要内容,如果未能解决你的问题,请参考以下文章