| 
       WillReturn Behavior  | 
    Top Previous Next | 
| 
 To return a specific value from a faked method, simply use CallTo combined with WillReturn. This allows you to define the behavior of the faked method and specify the return value. 
 Examples 
 
 TEST_F(Examples, ChangeReturnValue) { // Arrange auto a = Isolator(); Person* fakePerson = a.Fake.Instance<Person>(); 
 a.CallTo(fakePerson->GetAge()).WillReturn(10); 
 // Act auto result = fakePerson->GetAge(); 
 // Assert ASSERT_EQ(10, result); } 
 
 You can also fake methods that return non-trivial types, such as strings. Here's an example of faking a method that returns a string: 
 TEST_F(Examples, ChangeStingReturnValue) { // Arrange auto a = Isolator(); Person* fakePerson = a.Fake.Instance<Person>(); 
 a.CallTo(fakePerson->GetTransportName()).WillReturn(string("Bus")); 
 // Act // continue will test... } 
 
 In some cases, you might need to return objects from faked methods, either by reference or by value. Here's how you can return an object by value: 
 TEST_F(Examples, ReturnLocations) { // Arrange auto a = Isolator(); GPSLocation testLocation = GPSLocation (1, 1); Person realPerson = Person(); 
 vector<GPSLocation> testStopsVector; testStopsVector.push_back(GPSLocation(0, 0)); testStopsVector.push_back(testLocation); testStopsVector.push_back(GPSLocation(2, 2)); 
 auto fakeTransport = a.Fake.Instance<ITransport>(); a.CallTo(fakeTransport->GetAllStops()).WillReturn(testStopsVector); 
 realPerson.SetTransport(fakeTransport); 
 // Act auto result = realPerson.TransportStopsAt(testLocation); 
 // Assert ASSERT_TRUE(result); } 
 Note: In order to return by value, Typemock utilizes copy, default constructors or assignment operators to replicate values. 
 Note: There are times that the compiler optimizes out the constructors if they are not used, and Isolator++ won't be able to find them and call them (and will perform a shallow copy).  
 
 auto a = Isolator(); a.Testable.Members<ReturnedClass>(); 
 a.CallTo(fake->GetReturnedClass()).WillReturn(myReturnClass); // Returned by value 
   Note: To fake Microsoft classes or if your methods return Microsoft types, download the PDB file from the Microsoft Server (See Local Debug Symbols) 
 
 
  | 
Copyright Typemock Ltd. 2009-2025. All Rights Reserved.