我有很多测试由Rhino Mocks的另一位开发人员编写。我们现在使用NSubstitute,所以我在NSubstitute重新编写测试。我重写了除了Is.Anything之外的其他东西。在下面的例子中,什么是NSubstitute写Is.Anything的方式?我首先展示了Rhino Mocks,然后又展示了NSubstitute考试。
Rhino Mocks:
using Rhino.Mocks;
namespace ClassUnderTest.Tests
{
class TestExample_NSubstitute_Tests
{
private const int ClassUnderTestLicenseFeatureID = 5106;
private IMessenger messageProvider;
private IEventAggregator eventAggregator;
private ClassUnderTest BuildValidClassUnderTestObject()
{
ClassUnderTest newClassUnderTest = new ClassUnderTest(
eventAggregator,
messageProvider);
return newClassUnderTest;
}
[TestMethod]
public void ClassUnderTestBroadcastInstrumentState_NoArgs_BaseClassMethodCall()
{
//ARRANGE
ClassUnderTest classUnderTest = BuildValidClassUnderTestObject();
//ACT
classUnderTest.BroadcastState();
//ASSERT
messageProvider.AssertWasCalled(a => a.ClassToDoWork(
Arg<OrchestrationInstrumentRuntimeServiceModel>.Is.Anything,
Arg<long>.Is.Anything));
Assert.IsNotNull(classUnderTest);
}
}
}
NSubstitute示例:
using NSubstitute;
namespace ClassUnderTest.Tests
{
class TestExample_NSubstitute_Tests
{
private const int ClassUnderTestLicenseFeatureID = 5106;
private IMessenger messageProvider;
private IEventAggregator eventAggregator;
private ClassUnderTest BuildValidClassUnderTestObject()
{
ClassUnderTest newClassUnderTest = new ClassUnderTest(
eventAggregator,
messageProvider);
return newClassUnderTest;
}
[TestMethod]
public void ClassUnderTestBroadcastInstrumentState_NoArgs_BaseClassMethodCall()
{
//ARRANGE
ClassUnderTest classUnderTest = BuildValidClassUnderTestObject();
//ACT
classUnderTest.BroadcastState();
//ASSERT
messageProvider.Received().ClassToDoWork(
Arg<OrchestrationInstrumentRuntimeServiceModel>.Is.Anything,//How do I re-write Is.Anything in NSubstitute?
Arg<long>.Is.Anything);//How do I re-write Is.Anything in NSubstitute?
Assert.IsNotNull(classUnderTest);
}
}
}
答案 0 :(得分:1)
我自己找到了答案......
使用NSubstitute;
命名空间ClassUnderTest.Tests { class TestExample_NSubstitute_Tests { private const int ClassUnderTestLicenseFeatureID = 5106; 私人IMessenger messageProvider; 私有IEventAggregator eventAggregator;
private ClassUnderTest BuildValidClassUnderTestObject()
{
ClassUnderTest newClassUnderTest = new ClassUnderTest(
eventAggregator,
messageProvider);
return newClassUnderTest;
}
[TestMethod]
public void ClassUnderTestBroadcastInstrumentState_NoArgs_BaseClassMethodCall()
{
//ARRANGE
ClassUnderTest classUnderTest = BuildValidClassUnderTestObject();
//ACT
classUnderTest.BroadcastState();
//ASSERT
messageProvider.Received().ClassToDoWork(
Arg.Any<OrchestrationInstrumentRuntimeServiceModel>(),
Arg.Any<long>();
Assert.IsNotNull(classUnderTest);
}
}
}