Test that passes:
//Arrange
Isolate.Fake.StaticMethods(typeof(Utility));
Isolate.WhenCalled(() => Utility.GetCachedValue<NVList>(null)).ReturnRecursiveFake();
//Act
NVList list = NVList.GetNameValueList();
//Assert
Isolate.Verify.WasCalledWithAnyArguments(() => Utility.GetCachedValue<NVList>(null));
Test that fails (original method is called even though it should be faked and Verify fails):
//Arrange
Isolate.Fake.StaticMethods(typeof(Utility));
//Act
NVList list = NVList.GetNameValueList();
//Assert
Isolate.Verify.WasCalledWithAnyArguments(() => Utility.GetCachedValue<NVList>(null));
I have to believe the reason the second is not working as expected is because the return of what is suppose to be the faked static method is a generic rather than a specific type. I have another test that is exactly the same as this second test which isn't working correctly but it runs as expected; the only difference is that it is a 'void' method in the utility rather than one that returns a specific type that is generic.