【发布时间】:2013-07-01 13:04:39
【问题描述】:
有没有办法验证 UnityEngine.Object.Destroy() 方法是否为特定游戏对象调用?由于 UnityEngine.Object 不是接口,我无法模拟它并检查 Verifiable()。我正在使用 C#、NUnit 和 Moq。
例如:
UnityEngine.Object.Destroy(audioSource);
我发现的唯一东西就是这个How to Mock (with Moq) Unity methods,但这不是我需要的。
感谢您提供有关此主题的任何帮助或更多信息!
我还做的一件事是,我将上面的调用提取到调用接口中,并验证该方法是否被调用,但这样我只是将问题转移到另一层。
public interface IAudioSource
{
void DestroyUnityObject();
}
然后我可以在那里调用 Unity Destroy 方法。
public void DestroyUnityObject()
{
UnityEngine.Object.Destroy(mAudioSource);
}
并模拟上层方法调用。
audioSourceMock.Setup(s => s.DestroyUnityObject()).Verifiable();
但正如我所说,这只会将问题放在其他地方,我仍然无法验证 Unity 方法是否被正确调用。
【问题讨论】:
标签: c# unit-testing nunit unity3d moq