【问题标题】:How to setup a new instance of InputAction.CallbackContext to test the input?如何设置 InputAction.CallbackContext 的新实例来测试输入?
【发布时间】:2021-09-27 20:36:03
【问题描述】:

我正在使用新的输入系统并调用 Unity 事件将输入传递给我的行为脚本。这是通过输入显示简单移动的示例代码

public class MovementBehaviour : MonoBehaviour
{
    public void Move(InputAction.CallbackContext inputContext)
    {
        Vector2 movementDirection = inputContext.ReadValue<Vector2>();
        transform.position += new Vector3(movementDirection.x, movementDirection.y, transform.position.z);
    }
}

我想在我的单元测试中对其进行测试,但为此我必须传入一个新的 InputAction.CallbackContext。所以我的示例单元测试可能看起来像

[TestFixture]
public class MovementBehaviourTests
{
    [Test]
    public void ItShouldMove()
    {
        GameObject gameObject = new GameObject();
        MovementBehaviour movementBehaviour = gameObject.AddComponent<MovementBehaviour>();
        
        // movementBehaviour.Move(); // pass in Vector2.right
        
        Assert.AreEqual(gameObject.transform.position, Vector3.right);
    }
}

不幸的是,我无法弄清楚如何设置新实例以传入 Vector2.right 输入,以便测试输出。

https://docs.unity3d.com/Packages/c....InputSystem.InputAction.CallbackContext.html

我可以设置任何值属性吗?我必须执行任何操作吗?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    您可以像这样为 InputAction 创建一个新的类驱动程序:

    (仅测试)

    public class InputActionTest Extends InputAction{
       ReadValue<Vector2>(){
            return Vector2;
       }
    }
    
    
    [TestFixture]
    public class MovementBehaviourTests
    {
        [Test]
        public void ItShouldMove()
        {
            GameObject gameObject = new GameObject();
            MovementBehaviour movementBehaviour = 
            gameObject.AddComponent<MovementBehaviour>();
            
             movementBehaviour.Move(new InputActionTest()); 
            
            Assert.AreEqual(gameObject.transform.position, Vector3.right);
        }
    }
    

    Assert.AreEqual 似乎一直是编译器错误或 False

    更多信息,您可以搜索存根和驱动程序测试,或者您可以使用更强大的工具,例如 moq(模拟)对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2021-01-06
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多