Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 76f3522

Browse files
committed
Params arg unit test
1 parent 05ed0a7 commit 76f3522

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

tests/NSubstitute.Acceptance.Specs/Infrastructure/AnotherClass.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,16 @@ public abstract class AnotherClass
88

99
protected abstract string ProtectedMethod(string msg, int i, char j);
1010

11+
protected abstract string ProtectedMethod(string msg, params int[] numbers);
12+
1113
protected abstract void ProtectedMethodWithNoReturn();
1214

1315
protected abstract void ProtectedMethodWithNoReturn(int i);
1416

1517
protected abstract void ProtectedMethodWithNoReturn(string msg, int i, char j);
1618

19+
protected abstract void ProtectedMethodWithNoReturn(string msg, params int[] numbers);
20+
1721
public abstract void PublicVirtualMethod();
1822

1923
protected void ProtectedNonVirtualMethod()
@@ -34,6 +38,11 @@ public string DoWork(string msg, int i, char j)
3438
return ProtectedMethod(msg, i, j);
3539
}
3640

41+
public string DoWork(string msg, params int[] numbers)
42+
{
43+
return ProtectedMethod(msg, numbers);
44+
}
45+
3746
public void DoVoidWork()
3847
{
3948
ProtectedMethodWithNoReturn();
@@ -48,4 +57,9 @@ public void DoVoidWork(string msg, int i, char j)
4857
{
4958
ProtectedMethodWithNoReturn(msg, i, j);
5059
}
60+
61+
public void DoVoidWork(string msg, params int[] numbers)
62+
{
63+
ProtectedMethodWithNoReturn(msg, numbers);
64+
}
5165
}

tests/NSubstitute.Acceptance.Specs/ProtectedExtensionsTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,19 @@ public void Should_mock_and_verify_protected_method_with_multiple_args()
4646
sub.Received(1).Protected("ProtectedMethod", Arg.Any<string>(), Arg.Any<int>(), Arg.Any<char>());
4747
}
4848

49+
[Test]
50+
public void Should_mock_and_verify_protected_method_with_params_arg()
51+
{
52+
var expectedMsg = "unit test message";
53+
var sub = Substitute.For<AnotherClass>();
54+
var worker = new Worker();
55+
56+
sub.Protected("ProtectedMethod", Arg.Any<string>(), Arg.Any<int[]>()).Returns(expectedMsg);
57+
58+
Assert.That(worker.DoWorkWithParams(sub, 3, 5), Is.EqualTo(expectedMsg));
59+
sub.Received(1).Protected("ProtectedMethod", Arg.Any<string>(), Arg.Any<int[]>());
60+
}
61+
4962
[Test]
5063
public void Should_throw_on_mock_null_substitute()
5164
{
@@ -136,6 +149,20 @@ public void Should_mock_and_verify_void_method_with_multiple_args()
136149
sub.Received(1).Protected("ProtectedMethodWithNoReturn", Arg.Any<string>(), Arg.Any<int>(), Arg.Any<char>());
137150
}
138151

152+
[Test]
153+
public void Should_mock_and_verify_void_method_with_params_arg()
154+
{
155+
var count = 0;
156+
var sub = Substitute.For<AnotherClass>();
157+
var worker = new Worker();
158+
159+
sub.When("ProtectedMethodWithNoReturn", Arg.Any<string>(), Arg.Any<int[]>()).Do(x => count++);
160+
161+
worker.DoVoidWork(sub, 6, 9);
162+
Assert.That(count, Is.EqualTo(1));
163+
sub.Received(1).Protected("ProtectedMethodWithNoReturn", Arg.Any<string>(), Arg.Any<int[]>());
164+
}
165+
139166
[Test]
140167
public void Should_throw_on_void_method_null_substitute()
141168
{
@@ -201,6 +228,11 @@ internal string DoEvenMoreWork(AnotherClass worker, int i, char j)
201228
return worker.DoWork("worker", i, j);
202229
}
203230

231+
internal string DoWorkWithParams(AnotherClass worker, params int[] numb)
232+
{
233+
return worker.DoWork("worker", numb);
234+
}
235+
204236
internal void DoVoidWork(AnotherClass worker)
205237
{
206238
worker.DoVoidWork();
@@ -215,5 +247,10 @@ internal void DoVoidWork(AnotherClass worker, int i, char j)
215247
{
216248
worker.DoVoidWork("void worker", i, j);
217249
}
250+
251+
internal void DoVoidWork(AnotherClass worker, params int[] numb)
252+
{
253+
worker.DoVoidWork("void worker", numb);
254+
}
218255
}
219256
}

0 commit comments

Comments
 (0)