Created
September 15, 2017 07:58
-
-
Save mvonrenteln/e275c3f9856d4f4eb6edf6726a81fe70 to your computer and use it in GitHub Desktop.
Example for Stackoverflow question https://stackoverflow.com/questions/46234079/in-groovy-spock-assert-call-methods-are-not-executed
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trait DiffTrait { | |
Javers javers = JaversBuilder.javers().build() | |
def result | |
def expected | |
String diff(result, expected) { | |
Diff diff = javers.compare(result, expected); | |
def valueChanges = diff.getChangesByType(ValueChange) | |
String message = "" | |
valueChanges.each { message += "\n$it.propertyName = $it.left instead of expected: $it.right" } | |
return message | |
} | |
String diff() { | |
diff(result, expected) | |
} | |
def result(result) { | |
this.result = result | |
return result | |
} | |
def expected(expected) { | |
this.expected = expected | |
return expected | |
} | |
} | |
class MyTest extends Specification implements DiffTrait { | |
def testFails() { | |
when: | |
def myResult = new Person(name:"Bob", email:"test@result.org") | |
def myExpected = new Person(name:"Bob", email:"test@expected.org") | |
then: | |
assert result(myResult) == expected(myExpected), diff() | |
} | |
def testSucceeds() { | |
when: | |
def myResult = result(new Person(name:"Bob", email:"test@result.org")) | |
def myExpected = expected(new Person(name:"Bob", email:"test@expected.org")) | |
then: | |
assert myResult == myExpected, diff() | |
} | |
} | |
class Person { | |
String name | |
String email | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment