有没有办法验证是否为特定游戏对象调用了 UnityEngine.Object.Destroy() 方法?由于 UnityEngine.Object 不是接口,我无法模拟它并检查 Verifiable()。我正在使用 C#、NUnit 和 Moq。
例如:
UnityEngine.Object.Destroy(audioSource);
我发现的唯一一件事是如何模拟(使用 Moq)Unity 方法,但这不是我需要的。
感谢您提供有关此主题的任何帮助或更多信息!
我还做的一件事是,我将上面的调用提取到调用接口中,并验证该方法是否被调用,但这样我只会将问题转移到另一层。
public interface IAudioSource
{
void DestroyUnityObject();
}
然后我可以在那里调用 Unity Destroy 方法。
public void DestroyUnityObject()
{
UnityEngine.Object.Destroy(mAudioSource);
}
并模拟上层方法调用。
audioSourceMock.Setup(s => s.DestroyUnityObject()).Verifiable();
但正如我所说,这只会将问题放在其他地方,我仍然无法验证 Unity 方法是否被正确调用。