createMock( WP_Customize_Manager::class ); $added_settings = array(); $added_controls = array(); $add_setting_callback = function( $id, $args = array() ) use ( &$added_settings ) { array_push( $added_settings, $id ); }; $add_control_callback = function( $id, $args = array() ) use ( &$added_controls ) { array_push( $added_controls, $id ); }; $customize_manager->method( 'add_setting' )->will( $this->returnCallback( $add_setting_callback ) ); $customize_manager->method( 'add_control' )->will( $this->returnCallback( $add_control_callback ) ); $theme_support = $this->get_instance_of( ThemeSupport::class ); $add_support_method = $add_explicit_theme_support ? 'add_options' : 'add_default_options'; $theme_support->$add_support_method( array( $option_name => 1234 ) ); $sut = $this->get_legacy_instance_of( WC_Shop_Customizer::class ); $sut->add_sections( $customize_manager ); $this->assertEquals( $expected_to_have_added_customization, in_array( 'woocommerce_' . $option_name, $added_settings, true ) ); $this->assertEquals( $expected_to_have_added_customization, in_array( 'woocommerce_' . $option_name, $added_controls, true ) ); } }