public static Mock <IVim> CreateVim( IRegisterMap registerMap = null, IMarkMap map = null, IVimGlobalSettings globalSettings = null, IVimGlobalAbbreviationMap globalAbbreviationMap = null, IVimGlobalKeyMap globalKeyMap = null, IVimHost host = null, IKeyboardDevice keyboardDevice = null, IMouseDevice mouseDevice = null, IVimData vimData = null, IMacroRecorder macroRecorder = null, ISearchService searchService = null, Dictionary <string, VariableValue> variableMap = null, MockRepository factory = null) { factory = factory ?? new MockRepository(MockBehavior.Strict); registerMap = registerMap ?? CreateRegisterMap().Object; map = map ?? new MarkMap(new BufferTrackingService()); globalSettings = globalSettings ?? new GlobalSettings(); host = host ?? new MockVimHost(); variableMap = variableMap ?? new Dictionary <string, VariableValue>(); globalKeyMap = globalKeyMap ?? new GlobalKeyMap(variableMap); macroRecorder = macroRecorder ?? CreateMacroRecorder(factory: factory).Object; searchService = searchService ?? factory.Create <ISearchService>().Object; keyboardDevice = keyboardDevice ?? (factory.Create <IKeyboardDevice>(MockBehavior.Loose)).Object; mouseDevice = mouseDevice ?? (factory.Create <IMouseDevice>(MockBehavior.Loose)).Object; vimData = vimData ?? VimUtil.CreateVimData(); globalAbbreviationMap = globalAbbreviationMap ?? new GlobalAbbreviationMap(); var mock = factory.Create <IVim>(MockBehavior.Strict); mock.SetupGet(x => x.RegisterMap).Returns(registerMap); mock.SetupGet(x => x.MarkMap).Returns(map); mock.SetupGet(x => x.GlobalSettings).Returns(globalSettings); mock.SetupGet(x => x.GlobalAbbreviationMap).Returns(globalAbbreviationMap); mock.SetupGet(x => x.GlobalKeyMap).Returns(globalKeyMap); mock.SetupGet(x => x.VimHost).Returns(host); mock.SetupGet(x => x.VimData).Returns(vimData); mock.SetupGet(x => x.MacroRecorder).Returns(macroRecorder); mock.SetupGet(x => x.SearchService).Returns(searchService); mock.SetupGet(x => x.VariableMap).Returns(variableMap); return(mock); }