public void SetUp() { _tags = MockRepository.GenerateStub<ITagGenerator<MyModel>>(); _generator = new TableGenerator<MyModel>(_tags); _data = new MyModel[] { new MyModel {Foo = new FooClass(), Bar = new BarClass(), Woo = "woo", Number = 1, NotUsed = 2}, new MyModel {Foo = new FooClass(), Bar = new BarClass(), Woo = "woohoo", Number = 2, NotUsed = 3}, new MyModel {Foo = new FooClass(), Bar = new BarClass(), Woo = "woodeedoo", Number = 3, NotUsed = 4} }; _generator.AddColumnWithDisplayFor(_barExp); _generator.AddColumnWithDisplayFor(_fooExp, "this is some foo"); _generator.AddColumnWithDisplayFor(_wooExp, new LinkTag("a link to nowhere", "http://nowhere")); _generator.AddColumnWithDefaultHeaderAndDisplayFor(_numberExp, tr => tr.AddClass("number")); _capturedModels = new List<MyModel>(); Action<object> modelCapture = m => { _currentModel = m as MyModel; _capturedModels.Add(_currentModel); }; _capturedExpressions = new List<Expression<Func<MyModel, object>>>(); _tags.Stub(t => t.SetModel(null)).IgnoreArguments().Do(modelCapture); Func<Expression<Func<MyModel, object>>, HtmlTag> df = (e) => { _capturedExpressions.Add(e); var data = e.Compile().Invoke(_currentModel); var tag = new HtmlTag("span").Text(data.ToString()); return tag; }; Expression<Func<MyModel, object>> exp = null; _tags.Stub(t => t.DisplayFor(exp)).IgnoreArguments().Do(df); }