public void Should_restore_variables_from_repository_after_template() { // assemble var instanceRepository = A.Fake <IRepository <FlowInstance> >(); A.CallTo(() => instanceRepository.Get(A <int> ._)) .Returns(new FlowInstance { Variables = new Dictionary <string, object> { { "Variable1", "Restored Value 1" } }, Template = new FlowTemplate { Id = 2 } }); var templateRepository = A.Fake <IRepository <FlowTemplate> >(); var steps = new List <IStep> { new StartStep(), new StopStep() }; var initialVariables = new Dictionary <string, object> { { "Variable1", "Initial Value 1" }, { "Example VariableKey 2", 2 } }; A.CallTo(() => templateRepository.Get(A <int> ._)).Returns(new FlowTemplate { Id = 2, Steps = steps, Variables = initialVariables }); // act var instance = new FlowInstanceFactory(templateRepository, instanceRepository); var sut = instance.Restore(1); var result = sut.Variables.ToList(); // assert Assert.Equal(2, result.Count); Assert.Equal("Variable1", result[0].Key); Assert.Equal("Restored Value 1", result[0].Value); Assert.Equal("Example VariableKey 2", result[1].Key); Assert.Equal(2, result[1].Value); }