Add .with() syntax for easier scenarios

Makes it easy to test that a function validates its inputs.