我是使用 nsubstitute 进行测试的新手。所以也许这对你来说是一个微不足道的问题。但我找不到一个。我请你帮我解决以下问题。
我通过测试一个抽象类遇到了一个问题:
public abstract class BaseClass
{
public string Name
{
get { return GetName(); }
set { SetName(value); }
}
protected abstract string GetName();
protected abstract void SetName(string value);
}
我想测试一下,getter 和 setter 是否在抽象类中被正确调用。要获取我派生的类的受保护抽象方法:
public class MockClass:BaseClass
{
protected override string GetName()
{
return MockGetName();
}
protected override void SetName(string value)
{
MockSetName(value);
}
public virtual string MockGetName()
{
return string.Empty;
}
public virtual void MockSetName(string value)
{
}
}
现在我想测试,如果调用了 MockGetName()-Method,则在通过以下方式获取 Name-Property 的值时:
public void TestNameGetter()
{
// arrange
MockClass mock = Substitute.For<MockClass>();
mock.MockGetName().Returns(" Irgendein Name ");
// act
string name = mock.Name;
// assert
Assert.AreEqual(" Irgendein Name ", name, "Wrong name");
mock.DidNotReceive().MockSetName(Arg.Any<string>());
mock.Received().MockGetName();
}
但是从未调用过 MockGetName 方法,并且变量名称的值错误。
我希望任何人都可以帮助我测试功能。谢谢