使用 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);
}
我正在尝试弄清楚如何使用 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);
}