我在一個類似于下面的抽象類中有一個隱式運算子,它將資料轉換為提供的型別。
public abstract class MyClass
{
private object dataHolder; // just for representation
// at implementation it tries to convert dataHolder object
// or returns null if failed
public abstract T? Convert<T>();
public static implicit operator byte[]?(MyClass obj) => obj.Convert<byte[]?>();
}
我正在嘗試為這個類創建單元測驗
[TestMethod]
public void MyTestMethod()
{
Mock<MyClass> mockedClass = new() { CallBase = true };
mockedClass.Setup(x => x.Convert<byte[]?>()); // no return statement
// this should be null using implicit operator
byte[]? output = mockedClass.Object;
// however I am receiving an empty byte[] (length 0).
Assert.IsNull(output);
}
如何驗證我的輸出也可以為空?
uj5u.com熱心網友回復:
如果您想測驗隱式運算子是否按預期作業,您只需驗證是否呼叫了預期的基礎方法。
像這樣的東西;
[Test]
public void VerifyThatImplicitOperatorWorksAsExpected()
{
Mock<MyClass> mockedClass = new() { CallBase = true };
mockedClass.Setup(x => x.Convert<byte[]?>()).Returns<byte[]?>(null);
byte[]? output = mockedClass.Object;
Assert.IsNull(output);
// Verify that the Convert method was called.
mockedClass.Verify(x => x.Convert<byte[]?>(), Times.Once);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/379993.html
