Test Double Sample

From STRIDE Wiki
Revision as of 14:44, 9 June 2010 by Ivailop (talk | contribs) (Tests Description)
Jump to: navigation, search

Introduction

Please read the Using Test Doubles article before proceeding in order to understand the concepts. You may also find it helpful to review the information available here for more details on test double terminology.

This example presents two different function double settings that differ in the point of interception (at DEFINITION vs. at REFERENCE).

Tests Description

Basic::TestFunction

This example uses a C++ test class to validate the test_func1 function under test. The dependency depend1 is left in place during the CallNoDoubling method. The dependency is replaced with a fake method, which simply returns a constant in the CallWithFake method. The dependency is replaced with a mock method, which validates the passed in parameter, in the CallWithMock method.
The intercept mangling parameters in this example, in the scl_function pragma, uses the "DEFINITION" option to indicate the the intercept will be at the function definition, and the"IMPLICIT" option because no mangling is required to intercept (because the caller and callee are in separate compilation units).

Basic::TestFunctionWithDepend

This example uses a C++ test class to validate the test_func2 function under test. The dependency depend2 is left in place during the CallNoDoubling method. The dependency is replaced with a fake method, which simply returns a constant in the CallWithFake method. The dependency is replaced with a mock method, which validates the passed in parameter, in the CallWithMock method.
The intercept mangling parameters in this example, in the scl_function pragma, uses the "REFERENCE" option to indicate the the intercept will be at the function call, and the"EXPLICIT" option because mangling is required to intercept (because the caller and callee reside in the same source file).