使用 NUnit 对隐式运算符进行单元测试

Unit Testing an implicit operator with NUnit

我正在尝试弄清楚如何使用 NUnit 围绕隐式转换编写单元测试。

到目前为止,我能够做到的唯一方法是创建一个静态函数,该函数将对象将转换为的类型作为参数并立即 returns 它。

public class Foo
{
    public Foo(string name)
    {
        Name = name;
    }
    public string Name { get; set; }
}
public class Bar
{
    public Bar(string name)
    {
        Name = name;
    }
    public string Name { get; set; }

    public static implicit operator Foo(Bar bar)
    {
        return new Foo(bar.Name);
    }
}
[Test]
public void BarToFooImplicitConversionTest()
{
    var bar = new Bar("FooBar");
    var foo = ConvertBarToFooImplicitly(bar);
    foo.Name.Should().Be("FooBar");
}
private static Foo ConvertBarToFooImplicitly(Foo foo)
{
    return foo;
}

NUnit 中有什么东西是我遗漏的吗?或者有更好的方法吗?

只需使用显式类型而不是 var 来触发隐式运算符,例如

[Test]
public void Should_be_possible_to_convert_bar_to_foo()
{
    //Arrange
    const string fooBar = "FooBar";
    Bar bar = new Bar(fooBar);

    //Act
    Foo foo = bar;

    //Assert
    foo.Name.Should().Be(fooBar);
}