首先,这是一个Microsoft Store winrt库,我正在尝试用这个签名测试一个公共方法:
string GetStringFromFile(StorageFile storageFile);
但是StorageFile
没有构造函数,所以我不能在我的NUnit测试代码中创建它。此外,我认为我不能在WinRt上使用Moq
或任何其他mock库。
我一直在寻找从IStorageFile接口创建一个手工制作的假,但它里面有很多方法,我又一次陷入了另一个深度属性,指出StorageFile
内部没有公共构造函数的类,例如ImageProperties
。
所以…用StorageFile
和/或ImageProperties
类测试方法的最佳方法是什么?
StorageFile
类实现了一个接口IStorageFile,所以你应该改变你的依赖,然后你可以使用一个mock或stub(可能是你创建的类,如果你不能使用Moq等)。
假设此方法是您的方法之一,而不是您无法控制的另一个库中的方法;我会更改签名,使参数为IStorageFile类型,而不是具体的类。然后,您可以为您的测试创建一个假的StorageFile,但是在应用程序中使用一个真实的StorageFile。