ValidateObject работает частично, вызывая ValidateObjectPropertyB.Я предполагаю, что вы хотите смоделировать этот второй метод так, чтобы вы могли продемонстрировать, что ValidateObject действительно вызывает ValidateObjectPropertyB (при условии!тестируют детали реализации, чего обычно не следует делать.Рассмотрим функцию, которая принимает два целочисленных значения и возвращает их сумму. Вы хотели бы убедиться, что когда эта функция прошла 3 и 5 вернула 8, вам не следует проверять, что она пришла к этому ответу, используя определенный метод / класс в разделекапот, потому что это не имеет отношения к желаемому результату, и если в будущем вы решите, что хотите реорганизовать свой код, тест, скорее всего, начнет проваливаться, даже если код все еще возвращает желаемый результат.
Если посмотреть на ваш код, тоКажется, что возвращаемое значение ValidateObject напрямую не зависит от вызова метода ValidateObjectPropertyB, а скорее от значения validationResult.Именно это значение необходимо установить для правильного тестирования ValidateObject.
Один из способов добиться того, о чем вы просите, - сделать виртуальный ValidateObjectPropertyB, а затем создать производный класс, который переопределяет этот метод и возвращает то, что вы хотите.Однако я не рекомендую делать это исключительно ради модульного тестирования.