Assuming you are talking about mocking SiteSettingsProvider - then you should code against ISiteSettingsProvider
abstraction over concrete impl.
Similar with MvcContext
-> should use IMvcContext abstraction instead.
That way your code would operate with logical contracts (instead of concrete impl) and become unit-testable.
Here is an example with AutoFixture attribute to power abstract members generation (with NSubsitute)
The test may look like:
[AutoNSubsituteData, Theory]
public void TestName(Item item, Item settingsItem, IMvcContext context, ISiteSettingsProvider settings)
{
mvcContext.GetContextItem().Returns(item);
settingsProvider.GetSetting(sitecoreItem, "Settings", "General")
.Returns(settingsItem);
var sut = ...
}