Mock.SetupStatic<EagleUtility>(); Mock.Arrange(() => EagleUtility.ValidateMessage(Arg.IsAny<byte[]>(), Arg.AnyInt, TowerTypes.Unified)). DoNothing().Returns(true).MustBeCalled();Argument Exception
Could not resolve the target method; make sure that you have provided arguments correctly.
Code:public interface IBase { } public abstract class BaseClass { } public class AssignedClass : BaseClass { } public class WrapperClass<T> : IBase where T : BaseClass, new() { } public class Control { private WrapperClass<AssignedClass> getWrapper() { return null; } } [TestClass] public class TestFlow { [TestMethod] public void ShouldWork() { var control = Mock.Create<Control>(); var wrapper = Mock.Create<WrapperClass<AssignedClass>>(); //Dosent Work Mock.NonPublic.Arrange<WrapperClass<AssignedClass>>(control, "getWrapper").Returns(wrapper); //Dosent Work Mock.NonPublic.Arrange<IBase>(control, "getWrapper").Returns(wrapper); } }
public void Initialize() { //Initialize the vendor mapping module container.RegisterInstance<VendorMappingViewModel>(new VendorMappingViewModel(eventAggregator));//BOpublic class Person{ public int ID {get; set;} public string name {get; set;} public int age {get; set;} public bool isMale {get; set;}}//DALpublic 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; } } }}//BLLpublic 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);