【问题标题】:Mocking a function which uses out parameters模拟使用 out 参数的函数
【发布时间】:2012-07-18 08:19:34
【问题描述】:

我有一个使用 out 参数的函数。如何模拟这个函数?

我的功能是:

GetProperties(out string name, out string path, out string extension);

在我的原始代码中,我正在这样做:

string Name;
string Path;
string Extension;
MyObject.GetProperties(out Name, out Path, out Extension);

现在,我该如何模拟呢?

【问题讨论】:

  • 没明白,你能不能给我写代码,模拟一个返回字符串的函数很简单,mockObject.Setup(f => f.SomeMethod()).Returns("string");但不知道输出参数,

标签: c# unit-testing moq


【解决方案1】:

你应该在调用这个方法之前分配变量的值:

string Name = "name";
string Path = "path";
string Extension = "extension";
mock.Setup(item => item.GetProperties(out Name, out Path, out Extension))
    .Returns(someReturnValue);

虽然我更喜欢在你的返回类型中返回这些值,而不是使用这么多的输出参数。

【讨论】:

  • 函数是一个c++写的COM对象,所以out参数这么多,我以为CallBack可以用在这里面,不知道怎么用,
  • 如果你只需要模拟输出参数的返回值,它应该可以正常工作,你不需要回调。
  • @FaisalHafeez 你不应该模拟 COM 对象,除非你设计了它。你没有得到任何设计反馈。即使您确实设计了它,如果您的测试不会影响方法的设计,那么模拟它也没有多大意义。您最好将调用包装在一个非常简单的类中,而不是测试该类。您可能会发现这很有用:youtube.com/watch?v=R9FOchgTtLM.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
相关资源
最近更新 更多