'Verify that the named hook is run with the expected arguments as
specified by the arguments used to create the L{Runner}, when the
specified caller is invoked.
@param methodName: The name of the hook to verify.
@type methodName: L{str}
@param callerName: The name of the method that is expected to cause the
hook to be called.
If C{None}, use the L{Runner} method with the same name as the
hook.
@type callerName: L{str}'

def _testHook(self, methodName, callerName=None):

    if (callerName is None):
        callerName = methodName
    arguments = dict(a=object(), b=object(), c=object())
    argumentsSeen = []
    def hook(**arguments):
        argumentsSeen.append(arguments)
    runnerArguments = {methodName: hook, '{}Arguments'.format(methodName): arguments.copy()}
    runner = Runner(reactor=MemoryReactor(), **runnerArguments)
    hookCaller = getattr(runner, callerName)
    hookCaller()
    self.assertEqual(len(argumentsSeen), 1)
    self.assertEqual(argumentsSeen[0], arguments)
