New to Telerik JustMock? Download free 30-day trial

Do Nothing

The DoNothing method is used to arrange that a call to a method or property should be ignored. When using DoNothing, all the logic inside the arranged method or property body is skipped and nothing happens when you call it.

We will use the following interface for the examples in this article:

Sample setup

public interface IFoo 
{ 
    int Bar { get; set; } 
    void VoidCall(); 
} 
Public Interface IFoo 
    Property Bar() As Integer 
    Function VoidCall() 
End Interface 

Skip the Logic of a Method

Before describing the usage of the DoNothing method, let's first see an example to illustrate it.

Example 1: Sample usage of DoNothing on a void method

[TestMethod] 
public void SimpleExampleWithDoNothing() 
{ 
    // Arrange 
    var foo = Mock.Create<IFoo>(); 
 
    Mock.Arrange(() => foo.VoidCall()).DoNothing().MustBeCalled(); 
 
    // Act 
    foo.VoidCall(); 
 
    // Assert 
    Mock.Assert(foo); 
} 
<TestMethod()> 
Public Sub SimpleExampleWithDoNothing() 
    ' Arrange 
    Dim foo = Mock.Create(Of IFoo)() 
 
    Mock.Arrange(Function() foo.VoidCall()).DoNothing().MustBeCalled() 
 
    ' Act 
    foo.VoidCall() 
 
    ' Assert 
    Mock.Assert(foo) 
End Sub 

In the example, we mark foo.VoidCall() with DoNothing and MustBeCalled. In this way, we indicate that a call to foo.VoidCall must be ignored and nothing should happen, but still the method should be called during the execution of the test.

You can use DoNothing with non-void calls as well. For the example we will be using the following Foo class:

Sample setup

public class Foo 
{ 
    public int Echo(int num) 
    { 
        return num; 
    } 
} 
Public Class Foo 
    Function Echo(num As Integer) As Integer 
        Throw New NotImplementedException 
    End Function 
End Class 

Example 2: Sample usage of DoNothing with non-void method

[TestMethod] 
public void DoNothingWithNonPublicCalls() 
{ 
    // Arrange 
    var foo = Mock.Create<Foo>(); 
 
    Mock.Arrange(() => foo.Echo(Arg.AnyInt)).DoNothing(); 
 
    // Act 
    foo.Echo(10); 
} 
<TestMethod()> 
Public Sub DoNothingWithNonPublicCalls() 
    ' Arrange 
    Dim foo = Mock.Create(Of Foo)() 
    Mock.Arrange(Function() foo.Echo(Arg.AnyInt)).DoNothing() 
 
    ' Act 
    foo.Echo(10) 
End Sub 

Skip the Logic of a Property Setter

DoNothing can be also used on a call to a property set.

Example 4: Usage of DoNothing on property setter

[TestMethod] 
public void AssertDoNothingOnPropertySet() 
{ 
    // Arrange 
    var foo = Mock.Create<IFoo>(); 
 
    Mock.ArrangeSet(() => foo.Bar = 1).DoNothing().MustBeCalled(); 
 
    // Act 
    foo.Bar = 1; 
 
    // Assert 
    Mock.Assert(foo); 
} 
<TestMethod()> 
Public Sub DAssertDoNothingOnPropertySet() 
    'Arrange 
    Dim foo = Mock.Create(Of IFoo)() 
    Mock.ArrangeSet(Sub() foo.Bar = 0).DoNothing().MustBeCalled() 
 
    'Act 
    foo.Bar = 0 
 
    'Assert 
    Mock.Assert(foo) 
End Sub 

See Also

In this article
Not finding the help you need? Improve this article