public class Foo{ public Foo() { } protected virtual void MethodToMock() { } protected virtual void MethodToTest() { }}public class Bar : Foo{ public Bar() { } protected override void MethodToTest() { MethodToMock(); }}[TestMethod]public void BarTest(){ var mock = Mock.Create<Bar>(Behavior.CallOriginal);
Mock.NonPublic.Arrange(mock, "MethodToMock").DoNothing(); // Test MethodToTest here} IService service = Mock.Create<IService>();
Mock.Arrange(()=>service.DoSomething()).MustBeCalled();var collection = web.Lists[listName].GetItems(query);
Here is my JustMock code
private SPWeb mockSPWeb = Mock.Create<SPWeb>(); private SPList mockSPList = Mock.Create<SPList>(); private SPListCollection mockSPListCollection = Mock.Create<SPListCollection>(); private SPListItemCollection mockSPListItemCollection = Mock.Create<SPListItemCollection>(); Mock.Arrange(() => mockSPWeb.Lists).Returns(mockSPListCollection); Mock.Arrange(() => mockSPListCollection[Arg.IsAny<string>()]).Returns(mockSPList); Mock.Arrange(() => mockSPList.GetItems(new SPQuery())).Returns(mockSPListItemCollection); var testEntityRepository = new TestEntityRepository(new ListItemRepository()); var entity = testEntityRepository.GetASingleTestEntity(mockSPWeb);I've tried several different ways to Mock this all with the same error:
Test method HealthDialog.SharePoint.Foundation.UnitTests.BaseEntityTests.TestBaseEntityRepository threw exception: System.NullReferenceException: Object reference not set to an instance of an object..
public void CreateAttachmentFromAfterUrl_AttachmentNameNotInAfterUrl_ReturnsNull(){ var properties = Isolate.Fake.Instance<SPItemEventProperties>(); Isolate.WhenCalled(() => properties.ListItem.Attachments) .WillReturnCollectionValuesOf(new[] { "A","B" }); Isolate.WhenCalled(() => properties.AfterUrl) .WillReturn("C"); var attachment = AttachmentFactory.CreateAttachmentFromAfterUrl(properties); attachment.ShouldBeNull();}public void CreateAttachmentFromAfterUrl_AttachmentNameNotInAfterUrl_ReturnsNull(){ var properties = Mock.Create<SPItemEventProperties>(); var collection = Mock.Create<SPAttachmentCollection>(); var list = new List<string> {"A", "B"}; Mock.Arrange(() => collection.GetEnumerator()).Returns(list.GetEnumerator()); Mock.Arrange(() => properties.ListItem.Attachments).Returns(collection); Mock.Arrange(() => properties.AfterUrl).Returns("C"); var attachment = AttachmentFactory.CreateAttachmentFromAfterUrl(properties); attachment.ShouldBeNull();}if (HttpContext.Current != null) { string s = HttpContext.Current.Request.... string t = HttpContext.Current.Server.... }Hi,
I want to create a unit test for the CheckUser method presented below... In that method we create a new instance of a class named LoginService. Inside my unit test, I know how to arrange my LoginService instance so that the mocking framework will replace the original call to ValidateUser with a simple "Return 1". That is not my problem.... My problem is that the parameterless constructor of the LoginService class used in CheckUser does a couple things I'd prefer not to do in my unit test like (as an example) connect to an Active Directory. Of course, if my unit test tries systematically to create a REAL LoginService then it will always fail as I have no active directory ready for my tests... Is there a way with JustMock to tell the mocking infrastructure that whenever my code tries to instanciate a class of type LoginService then I want a MOCK (or proxy) of LoginService to be created instead? On this mock I would of course have set arrange statements to have it behave like I want, let's say, Return 1 when ValidateUser is invoked on the Mock (or proxy)...
public class LegacyCode
{
public int CheckUser(string userName, string password)
{
----> LoginService _service = new LoginService();
[some code ommited here]
return _service.ValidateUser(userName, password);
}
}
I know some other mocking products out there support such a feature and I want to know if JustMock supports it also?
Thanks for your time.