MockJockey
public interface IProduct
{
	Guid Id { get; set; }
	string Name { get; set; }
	string Description { get; set; }
	float Price { get; set; }

	string GetFormattedPrice();
}

/* ----- Unit Test ------ */

[TestMethod]
public void TestProduct()
{
	Jockey theJockey = new Jockey();
	IProduct mockedProduct = theJockey.Mock<IProduct>();

	Assert.IsNotNull(mockedProduct);
	Assert.IsInstanceOfType(mockedProduct, typeof(IProduct));
}
[TestMethod]
public void TestProduct()
{
	Jockey theJockey = new Jockey();
	IProduct mockedProduct = theJockey.Mock<IProduct>();
	Expect.When(mockedProduct)
		  .CallsMethod("GetFormattedPrice")
		  .ThatItReturns("$5.99");

	Assert.IsNotNull(mockedProduct);
	Assert.IsInstanceOfType(mockedProduct, typeof(IProduct));
	Assert.AreEqual("$5.99", mockedProduct.GetFormattedPrice());
}
[TestMethod]
public void TestProduct()
{
	Jockey theJockey = new Jockey();
	IProduct mockedProduct = theJockey.Mock<IProduct>();
	Expect.When(mockedProduct)
		  .CallsMethod("GetFormattedPrice")
		  .ThatItReturns("$5.99");
	  
	Expect.When(mockedProduct)
	      .CallsProperty("Name")
	      .ThatItReturns("Product Name Here");

	Assert.IsNotNull(mockedProduct);
	Assert.IsInstanceOfType(mockedProduct, typeof(IProduct));
	Assert.AreEqual("$5.99", mockedProduct.GetFormattedPrice());
	Assert.AreEqual("Product Name Here", mockedProduct.Name);
}
[TestMethod]
[ExpectedException(typeof(InvalidOperationException))]
public void TestProductGetFormattedPriceFails()
{
	Jockey theJockey = new Jockey();
	IProduct mockedProduct = theJockey.Mock<IProduct>();

	Expect.When(mockedProduct)
		  .CallsMethod("GetFormattedPrice")
		  .ThatItThrows<InvalidOperationException>();

	string formattedPrice = mockedProduct.GetFormattedPrice();
	Assert.Fail();
}
public interface IEventsTest
{
	event EventHandler TestEvent;

	void ExecuteWithSideEffect();
}
bool eventFlag = false;

private void MySubscriber(object sender, EventArgs e)
{
	eventFlag = true;	
}

[TestMethod]
public void TestEventClass()
{
	Jockey theJockey = new Jockey();
	IEventsTest myMockObject = theJockey.Mock<IEventsTest>();
	myMockObject.TestEvent += MySubscriber;

	Expect.When(myMockObject)
		  .CallsMethod("ExecuteWithSideEffect")
		  .ThatItRaises("TestEvent", myMockObject, new EventArgs());

	myMockObject.ExecuteWithSideEffect();
	Assert.IsTrue(eventFlag);
}