代码之家  ›  专栏  ›  技术社区  ›  Buda Gavril

用非取代基模拟变量数的函数

  •  0
  • Buda Gavril  · 技术社区  · 5 年前

    我有一个与以下方法的接口:

    bool ProcessActions(int actionTypeId, out List<int> ints, params object[] actionParameters);
    

    现在,如何模拟此方法以使用nsubstitute返回值?以下是我的尝试:

        this.actionOperationsMock.ProcessActions(Arg.Any<int>(), out List<int> _, Arg.Any<int>(), Arg.Any<int>(), Arg.Any<int>(), Arg.Any<DateTime>(), Arg.Any<DateTime>(), Arg.Any<string>()).Returns(
            x =>
                {
                    x[1] = null;
                    return true;
                });
    

    我只尝试用前两个参数来模拟它,但是在我的测试中,这个方法返回了false。

    1 回复  |  直到 5 年前
        1
  •  1
  •   LukaszBalazy    5 年前

    我建议使用returnsfranyargs,因为您要模拟每个参数,而params对象[]在这种情况下不必模拟,因为params允许0个参数。

    mock.ProcessActions(Arg.Any<int>(), out Arg.Any<List<int>>()).ReturnsForAnyArgs(
                x =>
                {
                    x[1] = null;
                    return true;
                });
    
            var res = mock.ProcessActions(1, out var list, 1, 1, 1 , DateTime.Now, DateTime.Now.AddHours(2), "");