title: FakeItEasy: mocked method is not returning expected result
body: <p>Im using FakeItEasy as mocking framework in my unit tests. Method fakeUserService.AddUser  is mocked to returned new MwbeUser object with some non-empty values inside method AddUser </p>
  
  <pre><code> A.CallTo(() =&gt; fakeUserService.AddUser(new MwbeUserRegistrationIn() 
                                              { 
                                                  UserName = userName,                                                               
                                                  FirstName = firstName, 
                                                  SecondName = secondName, 
                                                  Password = passwd, 
                                                  Email = email, 
                                                  BirthDate = birthdate 
                                              })).Returns(new MwbeUser 
                                                              { 
                                                                  UserName = userName, 
                                                                  Email = email, 
                                                                  FirstName = firstName, 
                                                                  SecondName = secondName, 
                                                                  BirthDate = birthdate 
                                                              });
  </code></pre>
  
  <p>but it returns nulls. Why?</p>
  
  <pre><code>public void AddUserWithProperdata_UserIsAddedAndEmailIsGenerated()
          {
              // Arrange
              String userName = "user";
              String firstName = "Ala";
              String secondName = "ADsadas";
              String passwd = "passwd";
              String email = "kot@wp.pl";
              DateTime birthdate = DateTime.Today;
  
              fakeUserService = A.Fake&lt;IMwbeUserService&gt;();
              fakeAuthenticationService = A.Fake&lt;IAuthenticationService&gt;();
  
              A.CallTo(() =&gt; fakeUserService
                  .AddUser(new MwbeUserRegistrationIn() { UserName = userName, FirstName = firstName, SecondName = secondName, Password = passwd, Email = email, BirthDate = birthdate }))
                .Returns(new MwbeUser { UserName = userName, Email = email, FirstName = firstName, SecondName = secondName, BirthDate = birthdate });
  
              MwbeUsersController controller = new MwbeUsersController(fakeUserService, fakeAuthenticationService);
  
              MwbeUserRegistrationJson userjson = new MwbeUserRegistrationJson
              {
                  username = userName,
                  passwd = passwd,
                  firstname = firstName,
                  secondname = secondName,
                  email = email,
                  birthdate = birthdate
              };
  
              // Act
              IHttpActionResult untypedResult = controller.AddUser(userjson);
              var test1 = untypedResult as OkResult;
              var test2 = untypedResult as CreatedNegotiatedContentResult&lt;MwbeUser&gt;;
  
              // Assert
              Assert.IsNotNull(untypedResult);
          }
  
  
  
    public interface IMwbeUserService
          {
              MwbeUser AddUser(MwbeUserRegistrationIn regData);
  ...
  }
  </code></pre>
  
  <p>UPDATE 1: added code of controller</p>
  
  <pre><code>[RoutePrefix("users")]
      public class MwbeUsersController : ApiController
      {
          IMwbeUserService userSrv;
          IAuthenticationService authService;
  
  
          public MwbeUsersController(IMwbeUserService service, IAuthenticationService authSrv)
          {
              this.userSrv = service;
              this.authService = authSrv;
          }
  
  ...
  
       [Route("register")]
              [HttpPost]
              public IHttpActionResult AddUser(MwbeUserRegistrationJson userdatadto)
              {
                  // Validation
                  if (null == userdatadto)
                  {
                      return BadRequest("No user data");
                  }
  
                  if (!ModelState.IsValid)
                  {
                      return BadRequest(ModelState);
                  }
  
                  var registrationData = Conversion.ToUser(userdatadto);
                  if(registrationData.Code != MwbeResponseCodes.OK)
                  {
                      return BadRequest(registrationData.ErrorMessage);
                  }
  
                  // Registration
                  try
                  {
                      MwbeUser createdUser = userSrv.AddUser(registrationData.Data);
                      return Created&lt;MwbeUser&gt;("/users/" + createdUser.Id, createdUser); 
                  }
                  catch (UserAlreadyExistsException)
                  {
                      return BadRequest("User with this username already exists");
                  }
                  catch (InvalidEmailAddress)
                  {
                      return BadRequest("Given e-mail address is invalid");
                  }
  
              }
  </code></pre>