def with_args(self, *args, **kwargs):
        """Set the last call to expect specific argument values.

        The app under test must send all declared arguments and keyword arguments
        otherwise your test will raise an AssertionError.  For example:

        .. doctest::

            >>> import fudge
            >>> counter = fudge.Fake('counter').expects('increment').with_args(25, table='hits')
            >>> counter.increment(24, table='clicks')
            Traceback (most recent call last):
            ...
            AssertionError: fake:counter.increment(25, table='hits') was called unexpectedly with args (24, table='clicks')

        If you need to work with dynamic argument values
        consider using :func:`fudge.Fake.with_matching_args` to make looser declarations.
        You can also use :mod:`fudge.inspector` functions.  Here is an example of providing
        a more flexible ``with_args()`` declaration using inspectors:

        .. doctest::
            :hide:

            >>> fudge.clear_expectations()

        .. doctest::

            >>> import fudge
            >>> from fudge.inspector import arg
            >>> counter = fudge.Fake('counter')
            >>> counter = counter.expects('increment').with_args(
            ...                                         arg.any(),
            ...                                         table=arg.endswith("hits"))
            ...

        The above declaration would allow you to call counter like this:

        .. doctest::

            >>> counter.increment(999, table="image_hits")
            >>> fudge.verify()

        .. doctest::
            :hide:

            >>> fudge.clear_calls()

        Or like this:

        .. doctest::

            >>> counter.increment(22, table="user_profile_hits")
            >>> fudge.verify()

        .. doctest::
            :hide:

            >>> fudge.clear_expectations()

        """
        exp = self._get_current_call()
        if args:
            exp.expected_args = args
        if kwargs:
            exp.expected_kwargs = kwargs
        return self