Examples/ Cheatsheet of several common Unit Test sceneriao with Rhinomocks at JCDC
//This test is to demonstrate "return values" from bll by taking different branches
[Test]
public void BllMethod1_TestFirstBranchByPassingSam()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM(){FirstName = "Sam"};
Int64 returnValue = 0;
// Add Stubs for other DAL methods!
callPersonDALHdl.Stub(x => x.DalMethod1(criteria)).IgnoreArguments().Return(100);
//*** Act ***
returnValue = callPersonBLLHdl.BllMethod1(criteria);
//*** Assert ***
Assert.AreEqual(returnValue,1);
}
[Test]
public void BllMethod1_TestSecondBranchByPassingMad()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM(){FirstName = "Mad"};
Int64 returnValue = 0;
// Add Stubs for other DAL methods!
callPersonDALHdl.Stub(x => x.DalMethod2(criteria)).IgnoreArguments().Return(100);
//*** Act ***
returnValue = callPersonBLLHdl.BllMethod1(criteria);
//*** Assert ***
Assert.AreEqual(returnValue, 2);
}
[Test]
public void BllMethod1_VerifyDalMethod1IsCalled()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM() { FirstName = "Sam" };
// Add Stubs for other DAL methods!
callPersonDALHdl.Stub(x => x.DalMethod1(criteria)).IgnoreArguments().Return(100);
//*** Act ***
callPersonBLLHdl.BllMethod1(criteria);
//*** Assert ***
callPersonDALHdl.AssertWasCalled(x => x.DalMethod1(null),a=>a.IgnoreArguments());
}
[Test]
public void BllMethod1_VerifyDalMethod2IsCalled()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM() { FirstName = "Mad" };
// Add Stubs for other DAL methods!
callPersonDALHdl.Stub(x => x.DalMethod2(criteria)).IgnoreArguments().Return(100);
//*** Act ***
callPersonBLLHdl.BllMethod1(criteria);
//*** Assert ***
callPersonDALHdl.AssertWasCalled(x => x.DalMethod2(null), a => a.IgnoreArguments());
}
// Demonstrating how to check for expected exceptions
[Test, ExpectedException(typeof(RulesException))] // Decorate like this to check for a single specific exception
public void BllMethod1_RulesException()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM() { FirstName = "" };
//*** Act ***
callPersonBLLHdl.BllMethod1(criteria);
}
//Demonstrating "With what parameters the dal call was made"
[Test]
public void BllMethod1_TestingDalParamtersWereCorrectlyPassedIn()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM() { FirstName = "Sam" };
// Add Stubs for other DAL methods!
callPersonDALHdl.Stub(x => x.DalMethod2(criteria)).IgnoreArguments().Return(100);
//*** Act ***
callPersonBLLHdl.BllMethod1(criteria);
IList<object[]> args = callPersonDALHdl.GetArgumentsForCallsMadeOn(db => db.DalMethod1(Arg<SearchCallPersonVM>.Is.Anything));
SearchCallPersonVM finalVal =
new SearchCallPersonVM();
if (args != null && args.Count > 0)
{
finalVal = (SearchCallPersonVM)(args[0][0]);
}
// assert.areequal(obj,obj) is not working well since we did not override the equal method
Assert.AreEqual(finalVal.FirstName, "Sam");
Assert.AreEqual(finalVal.LastName, "Brown");
}
//Demonstrating "How to check the number of times a method was called"
[Test]
public void BllMethod2_RepeatCalls()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM() { FirstName = "Mad" };
// Add Stubs for other DAL methods!
callPersonDALHdl.Stub(x => x.DalMethod2(criteria)).IgnoreArguments().Return(100);
//*** Act ***
callPersonBLLHdl.BllMethod2(criteria);
//*** Assert ***
callPersonDALHdl.AssertWasCalled(c => c.DalMethod1(null), options => options.IgnoreArguments().Repeat.Times(4));
}
[Test]
public void BllMethod3_MultipleRulesException()
{
//*** Arrange***
SearchCallPersonVM criteria = new SearchCallPersonVM(){FirstName = "John"};
try
{
//*** Act ***
callPersonBLLHdl.BllMethod3(criteria);
}
catch(RulesException ex)
{
if (ex.GetType() == typeof(RulesException))
{
ErrorInfo[] errors = ((RulesException)ex).Errors.ToArray();
Assert.AreEqual(errors[0].ErrorMessage,
"Name cannot be John");
}
}
//Get the arguments that were passed into internal DAL method.
[Test]
public void TestMethod1_criteriaWithPropertyOfCtrIdGreaterThan0()
{
// Test created by powershell on 02/15/2013 14:32:30//*** Arrange***
StaffProfilesRptVM TestCriteria = new StaffProfilesRptVM() { CtrId = 15 };
//*** BLL and DAL Stubs ***
mockSelfTestDALHdl.Stub(x => x.DDLForStaff(TestCriteria)).IgnoreArguments().Return(new List<DDLDispValueCV>(){});
//*** Act ***
selfTestBLLHdl.TestMethod1(TestCriteria);
IList<object[]> args = mockSelfTestDALHdl.GetArgumentsForCallsMadeOn(db => db.DDLForStaff(Arg<StaffProfilesRptVM>.Is.Anything));StaffProfilesRptVM finalVal = new StaffProfilesRptVM();
if (args != null && args.Count > 0)
{
finalVal = (StaffProfilesRptVM)(args[0][0]);
}
//*** Assert ***
Assert.AreEqual(finalVal.CtrId, 22);// Even though i set the ctr_id as 15, it should be called with 22, if i entered this if cluase.
}
}
No comments:
Post a Comment