unit-testing / mocking a class which contains functionality which depends on itself
I'm not sure if you need GetSettingByIdentifierOrCreateIfDoesNotExist declaration in your interface... Do you have special use cases where GetSetting&lt;T&gt; is not enough?

If I'm right and all you need is just GetSetting&lt;T&gt; method then you can go ahead and make GetSettingByIdentifierOrCreateIfDoesNotExist method private, thus you'll make it an implementation specific that doesn't need to be tested separately, you'll test it by testing GetSetting&lt;T&gt;.

If you do need GetSettingByIdentifierOrCreateIfDoesNotExist method, then I would go with a different approach: since GetSetting&lt;T&gt; is just an additional feature on top of GetSettingByIdentifierOrCreateIfDoesNotExist, you can remove it from ISettingsManager interface and rewrite as an extension method like this:

public interface ISettingsManager
{
    SettingData GetSettingByIdentifierOrCreateIfDoesNotExist(Enum identifier);
}

public static class SettingsManagerExtensions
{
    public static T GetSetting&lt;T&gt;(this ISettingsManager manager, Enum identifier)
    {
        var setting = manager.GetSettingByIdentifierOrCreateIfDoesNotExist(identifier);
        return (T)setting.Value;
    }
}