For instance if name is not specified, it could default to: "receving #{port}: #{data}"
If assertion is not specified, #{port} should #{predicate} #{data}. out should equal "foo"
This gets a little bit tricky with multiple ports, and sequences of this. But maybe an near plain JSON serialization would be fine. If people want it prettier, then should add the attributes themselves...