由于void方法,单元测试不起作用

Nik*_*ias 0 c# unit-testing

我必须为某些方法编写单元测试,并且我找到了一个返回的方法void:

public virtual void ReadCities(string filename)
{
      var engine = new FileHelperEngine(typeof (GeoDbCity));
      _geoDbCities = engine.ReadFile(filename) as GeoDbCity[];
}
Run Code Online (Sandbox Code Playgroud)

我的测试方法是:

[Test]
public void CheckIfCitiesWereRead()
{
    var getGeoDbCitiesMock = new Moq.Mock<GeoDbReader>();
    getGeoDbCitiesMock.Setup(y => y.ReadCities("ConstCities.csv"));
    Assert.NotNull(getGeoDbCitiesMock.Object.ReadCities("ConstCities.csv"));
}
Run Code Online (Sandbox Code Playgroud)

当调用assert时,我收到一个错误:

参数类型'对象'不能赋予参数类型'void'.

我的问题是:

如何处理void类型方法以及如何测试它们?在这个特殊情况下如何测试ReadCities方法是否真的读了一些东西?

Seb*_*zus 5

如果方法没有返回任何内容,那么该方法必须具有一些副作用,例如更改类的属性.测试副作用,例如测试所述属性的值.