private readonly IQueryable<Setting> SaveDbSettings = new List<Setting>{new Setting {Key = SomethingKey, SettingTypeID = (int) AppType, Value = HostVal},new Setting {Key = ShowSomethingKey, SettingTypeID = (int) AppType, Value = ShowSomethingValue},new Setting {Key = KeyBitLengthKey, SettingTypeID = (int)AppType, Value = KeyBitLengthValue}}.AsQueryable();
private void SetupSaveSettingsModel(){AutoMocker.Get<IRepository<Setting>>().Stub(x => x.All()).Return(SaveDbSettings);AutoMocker.Get<ICacher<Setting>>().Stub(x => x.AddToCache(SettingsCachePrefix + AppType, SaveDbSettings.Where(y => y.SettingTypeID == (int)AppType).ToList()));AutoMocker.Get<ICacher<Setting>>().Stub(x => x.GetListFromCache(SettingsCachePrefix + AppType)).Return(SaveDbSettings.Where(y => y.SettingTypeID == (int)AppType).ToList());}
[Test]public void SaveSettings_ShouldUpdateSettingsViaAddCollection(){SetupSaveSettingsModel();AutoMocker.ClassUnderTest.SaveSettings(SaveSettingModel);//AutoMocker.Get<IRepository<Setting>>().AssertWasCalled(x => x.UpdateCollection(Arg<IQueryable<Setting>>.List.Element(0, Property.Value("Key", HostKey))));AutoMocker.Get<IRepository<Setting>>().AssertWasCalled(x => x.UpdateCollection(SaveDbSettings), opt => opt.IgnoreArguments());}
From there an array of calls are retuned which contain an array of arguments. I can then iterate through the calls and arguments asserting my expectation.
Hope that helps