After a Processor has finished running, a unit test will generally want to validate that the FlowFiles went where they were expected to go. This can be achieved using the
assertTransferCount methods. The former method takes as arguments a Relationship and an integer to dictate how many FlowFiles should have been transferred to that Relationship. The method will fail the unit test unless this number of FlowFiles were transferred to the given Relationship or if any FlowFile was transferred to any other Relationship. The
assertTransferCount method validates only that the FlowFile count was the expected number for the given Relationship.
After validating the counts, we can then obtain the actual output FlowFiles via the
getFlowFilesForRelationship method. This method returns a
List<MockFlowFile>. It's important to note that the type of the List is
MockFlowFile, rather than the
FlowFile interface. This is done because
MockFlowFile comes with many methods for validating the contents.
MockFlowFile has methods for asserting that FlowFile Attributes exist (
assertAttributeExists), asserting that other attributes are not present (
assertAttributeNotExists), or that Attributes have the correct value (
assertAttributeNotEquals). Similar methods exist for verifying the contents of the FlowFile. The contents of a FlowFile can be compared to a
InputStream, a file, or a String. If the data is expected to be textual, the String version is preferred, as it provides a more intuitive error message if the output is not as expected.