public
void
Initialize()
{
//Initialize the vendor mapping module
container.RegisterInstance<VendorMappingViewModel>(
new
VendorMappingViewModel(eventAggregator));
//BO
public
class
Person
{
public
int
ID {
get
;
set
;}
public
string
name {
get
;
set
;}
public
int
age {
get
;
set
;}
public
bool
isMale {
get
;
set
;}
}
//DAL
public
class
PersonDbo
{
public
static
BO.Person GetPersonByID(
int
ID)
{
BO.Person result =
new
BO.Person();
//Helper method our project uses
Database db = Helper.CreateDbConnection();
using
(DbCommand dbCommand = db.GetStoredProcCommand(
"dbo.Select_Person_ByID"
))
{
db.AddInParameter(dbCommand,
"@PersonID"
, DbType.Int32, ID);
using
(IDataReader r = db.ExecuteReader(dbCommand))
{
if
(r.Read())
{
result.ID = r.GetInt32(r.GetOrdinal(
"PersonID"
));
result.name = r.GetString(r.GetOrdinal(
"Name"
));
result.age = r.GetInt32(r.GetOrdinal(
"Age"
));
result.isMale = r.GetBoolean(r.GetOrdinal(
"Is_Male"
));
}
else
return
null
;
return
result;
}
}
}
}
//BLL
public
class
PersonManager
{
public
static
BO.Person GetPerson(
int
ID)
{
BO.Person result = PersonDbo.GetPersonByID(ID);
return
result;
}
}
//Test
[TestClass()]
public
class
PersonManagerTest
{
[TestMethod()]
public
void
GetPersonTest()
//Arrange
Person tom =
new
Person() { ID = 7, name =
"Tom"
, age = 34, isMale =
true
};
Mock.SetupStatic<PersonManager>(Behavior.Strict);
Mock.Arrange(() => PersonManager.GetPerson(7)).Returns(tom).MustBeCalled();
//Act + Assert
Assert.AreEqual(PersonManager.GetPerson(7), tom);
}
[TestClass] |
public class Test |
{ |
[TestMethod] |
public void TestFoo() |
{ |
var mockFoo = Mock.Create<Foo>(); |
Mock.ArrangeSet(() => mockFoo.A = 1).MustBeCalled(); |
//mockFoo.A = 2; |
Mock.Assert(mockFoo); |
} |
} |
public class Foo |
{ |
public int A { get; set; } |
} |
[TestMethod] public void PayrollViewModel_CallConstructor_DisplayNameSet() { // Arrange var context = Mock.Create<PersonnelDomainContext>(); var session = Mock.Create<ISession>(); var eventAgg = Mock.Create<IEventAggregator>(); var viewModel = new PayrollViewModel(context, session, eventAgg); // Act viewModel.GetPersonnel(); // Assert Assert.AreEqual("Personnel List", viewModel.DisplayName, "Display name is incorrect"); }
TestMethod: PayrollViewModel_CallConstructor_DisplayNameSet
TestClass: PayrollViewModelTests
Result: Failed
Exception:
Could not create a mock from the specified target.
at Telerik.JustMock.MockManager.CreateInstance(Type target, Container container, Boolean profilerEnabled)
at Telerik.JustMock.MockManager.SetupMock(Type target, Behavior behavior, Boolean static)
at Telerik.JustMock.MockManager.CreateInstance()
at Telerik.JustMock.Mock.Create(Type target, Behavior behavior, Object[] args)
at Telerik.JustMock.Mock.Create(Type target, Object[] args)
at Telerik.JustMock.Mock.Create[T]()
at PayrollPrototype.Client.Personnel.Tests.PayrollViewModelTests.PayrollViewModel_CallConstructor_DisplayNameSet()
Failed
I suspect it is because the DomainContext is sealed. So how do I mock it, I'm supposed to be able to mock just about anything with justmock. (pardon the pun). I've been reading about mocking for some time but am still weak in the implementation. Need more practice. I keep seeming to hit errors when I try to mock anything.
thanks,
Stephen
var fakeEntities = Mock.Create<SomeEntities>(Constructor.Mocked);
Mock.Arrange(() => fakeEntities.SomeObjectSet.Count()).Returns(5);
Mock.Arrange(() => fakeEntities.SomeObjectSet.ToList()).Returns(someList);