Method works but tests fail?

There's nothing I can see from the code from your example that is wrong. Obviously, the object is not saving so I suspect that the parameters you are passing are incorrect and failing validation. Use an assert_valid to find out where the validation errors are.

http://api.rubyonrails.org/classes/ActionController/Assertions/ModelAssertions.html

e.g. assert_valid(assigns(:recipient))