2017-10-14 1 views
1

다음 이유가 확실하지 않습니다.출력이 같더라도 groovy에서 어설 션이 실패합니다.

나는 단순히 응답을 값 범위와 비교합니다.

json.groups.options.cost.flatten() 
: 당신이 그것을 잡을 때 너무 같은 응답을 평평 그래서

[[20.0000, 25.0000, 40.0000, 50.0000]]

20, 25, 40, 50 

그러나,이 표시됩니다 응답은 비용이 보이는 전면 종단 A JSON에서 온다

출력 :

[20.0000, 25.0000, 40.0000, 50.0000] 

이제 위의 내용을 일부 하와 비교하고 싶습니다. rdcoded 값.

def cost = [20, 25, 40, 50].collect { "${it}.0000" } 

그리고이 출력 : 내가 함께 둘을 주장 할 때

[20.0000, 25.0000, 40.0000, 50.0000] 

그래서, 나는 그들이 일을 기대하지만, 그렇지 않은 그래서이 변수를 만들었습니다.

assert cost == json.groups.options.cost.flatten() 

지금 흥미로운 것은 그 나는이 같은 주장을 수행하지만, 비용은 아래와 같이 설정되어있는 경우 :

def cost = [20.0000, 25.0000, 40.0000, 50.0000] 

어설 전달합니다. 이 기능은 어떻게 작동하며 어떻게 .collect 메서드를 사용하여 원래의 방식으로 작동시킬 수 있습니까?

답변

0

List<GString>List<BigDecimal>을 비교하려고 시도 했으므로이 내용은 주장하지 않습니다. 일반적으로는 이러한 목록을 비교에서 소수점에 대해 걱정할 필요가 없습니다 이유는 첫 번째 목록은 List<Integer>이고, 두 번째는 List<BigDecimal>입니다

assert [20, 25, 40, 50] == [20.0000, 25.0000, 40.0000, 50.0000] 

.

는 는 당신은 목록의 종류 json.groups.options.cost.flatten()이며,이 List<BigDecimal>가 아닌 경우

json.groups.options.cost.flatten().collect { new BigDecimal(it) } 

로 변환 할 수 있습니다 후 확인할 수 있습니다

[20, 25, 40, 50]

와 단순히 비교
관련 문제