Built-In During Filters

Top  Previous  Next

Filtering During Specific Module

 

Restrict fakes to a specific module:

 

TEST(DuringTests, FakeCallsFromSpecifiedDllUsingAModule)

{

    auto a = Isolator(During(A::Module("Test.dll")));

 

    auto fake = a.Fake.Instance<Person>();

 

    // This is restricted to getName called within test.dll

    a.CallTo(fake->GetName()).WillReturn("John");

 

    auto res = fake->GetName();

    ASSERT_TRUE(strcmp(res, "John") == 0);

}

 

 

Filtering During Specific Thread

 

Restrict fakes to a single thread:

 

TEST(DuringTests, FilterByThreadIdUsingAThread)

{

    auto a = Isolator(During(A::Thread(GetCurrentThreadId())));

 

    auto fake = a.Fake.Instance<Person>();

 

    // This is restricted to getName called within current thread

    a.CallTo(fake->GetName()).WillReturn("John");

 

    auto res = fake->GetName();

    ASSERT_TRUE(strcmp(res, "John") == 0);

}

 

 

Filtering During Specific Function Calls

 

Use A::Call to restrict the fakes to a specific function up the call stack:

Target type

How to use A::Call

Member Function

A::Call(ClassName::FunctionName)

Global Function

A::Call(FunctionName)

Constructor Function

A::Call(ClassName::ClassName)

 

 

TEST(DuringTests, FakeWhenCallsFromGlobalFilterSucceeded)

{

    auto a = Isolator(During(A::Call(CallGetBuildingNumber)));

 

    // This is restricted to GetBuildingNumber called within CallGetBuildingNumber

    a.CallToPrivate(A::Global(GetBuildingNumber)).WillReturn(3);

 

    ASSERT_EQ(3, CallGetBuildingNumber());

}

 

 

 

So far we’ve seen restrictions applied at the suite level, let’s look at how to restrict them at other levels.

 

Filtering During Specific Module on the instance

 

Restrict fakes to a specific module on the instance level:

 

TEST_F(ConditionalBehavior, MultipleDuringFiltersUsingAModuleSucceeded)

{

    auto a = Isolator();

 

    auto fake = a.Fake.Instance<Person>(During(A::Module("Test.dll")));

 

    // This is restricted to getName called within test.dll

    a.CallTo(fake->GetName()).WillReturn("John");

 

    auto res = fake->GetName();

    ASSERT_TRUE(strcmp(res, "John") == 0);

}

 

 
 

Filtering During Specific Module on the call

 

Restrict fakes to a specific module on the call level:

 

TEST_F(ConditionalBehavior, MultipleDuringFiltersUsingAModuleSucceeded)

{

    auto a = Isolator();

    auto fake = a.Fake.Instance<Person>();

 

    // This is restricted to getName called within test.dll

    a.CallTo(fake->GetName()).During(A::Module("Test.dll")).WillReturn("John");

 

    auto res = fake->GetName();

    ASSERT_TRUE(strcmp(res, "John") == 0);

}


Copyright  Typemock Ltd. 2009-2025.  All Rights Reserved.