Actually I was able to get the following testing code to work which uses reflective typemocks:
TypeMock.MockManager.Init()
Dim accountDaoMock As TypeMock.Mock = TypeMock.MockManager.MockAll(GetType(AccountDao))
'Account has to be saved
accountDaoMock.ExpectAndReturn("SaveOrUpdate", Nothing).Args(anAccount)
Dim emailTemplateDaoMock As TypeMock.Mock = TypeMock.MockManager.MockAll(GetType(EmailTemplateDao))
'Email template has to be loaded from the database
Dim anEmailTemplate As New EmailTemplate
emailTemplateDaoMock.ExpectAndReturn("GetByApplicationNameAndName", anEmailTemplate).Args("Fax Rocket", "Account Activation")
'Finally an activation email has to be sent
Dim accountManagerMock As TypeMock.Mock = TypeMock.MockManager.MockAll(GetType(AccountManager))
accountManagerMock.ExpectCall("SendActivationEmail").Args(anEmailTemplate, anAccount)
anAccountManager.SignupAccount(anAccount, "Fax Rocket")
TypeMock.MockManager.Verify()
I was trying to convert it to an equivalent using Natural Typemocks which is where I got stuck:
Using recorder As New TypeMock.RecordExpectations
recorder.DefaultBehavior.CheckArguments()
'anAccountManager.AccountDao.SaveOrUpdate(anAccount)
'recorder.Return(anAccount)
Dim anEmailTemplate As New EmailTemplate
recorder.ExpectAndReturn(anAccountManager.EmailTemplateDao.GetByApplicationNameAndName("Fax Rocket", "Account Activation"), anEmailTemplate)
anAccountManager.SendActivationEmail(anEmailTemplate, anAccount)
End Using
TypeMock.MockManager.Verify()
But I get an error in the last expected call to SendActivationEmail:
Call to Diangy.OnlineServiceFramework.Core.Accounts.AccountManager.SendActivationEmail() Parameter: 1
passed object [Diangy.OnlineServiceFramework.Core.Email.EmailTemplate] is not controlled by expected mock.