[ 
https://issues.apache.org/jira/browse/GROOVY-11258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17800736#comment-17800736
 ] 

Paul King commented on GROOVY-11258:
------------------------------------

Just to show the native way you'd do that assertion (without assertj):
{code}
void mapping() {
  assert somePojos()*.x.toSet() == ['a', 'b'] as Set
}
{code}

> AssertJ collection mapping is badly supported
> ---------------------------------------------
>
>                 Key: GROOVY-11258
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11258
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>    Affects Versions: 4.0.17
>            Reporter: Jan Hackel
>            Priority: Major
>
> The following code will fail with the message 
> {noformat}
> [Static type checking] - No such property: x for class: java.lang.Object
>  @ line 8, column 13.
>          .map{ it.x }
>                ^
> {noformat}
> {code:groovy}
> @groovy.transform.CompileStatic
> class AssertJCollectionMappingTest {
>   @org.junit.jupiter.api.Test
>   void mapping() {
>     def texts = somePojos()
>     org.assertj.core.api.Assertions.assertThat(texts)
>       .map{ it.x }
>       .containsExactlyInAnyOrderElementsOf(['a', 'b'])
>   }
>   private static Collection<Pojo> somePojos() {
>     return [new Pojo(x: 'a'), new Pojo(x: 'b')]
>   }
>   static class Pojo {
>     String x
>   }
> }
> {code}
> Changing the line  to  
> {noformat}
> .map({ it.x } as Function<Pojo, String>) 
> {noformat}
> makes it compile but it is clumsy for more complicated types.
> It would be nice if Groovy was able to resolve the types without hints.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to