问题标签 [privateobject.invoke]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3034 浏览

c# - 使用 PrivateObject.Invoke 调用静态转换函数在 C# 中不编译

我有一个测试方法,我调用一个将一种转换为另一种的私有函数。

此静态函数具有以下签名:

由于它是一个私有函数,测试人员会给出一个错误,说它无法访问它。所以我到了这一点:

编辑:最后一行会引发编译器错误,并显示消息“无法将类型对象转换为 Destiny []”。我做错了什么?

0 投票
1 回答
1258 浏览

c# - 如何使用 PrivateObject 访问或修改类中方法的变量

我是编写单元测试的新手。我使用 PrivateObject 来访问和修改类的私有成员以在测试时使用它。

但是,如果我想访问我正在测试的方法的私有变量,我该怎么做。我不会更改任何功能,但我需要修改一个变量才能完成单元测试。

这就是我想要做的。在 ABC 类中,我想修改 dwConn,因为我将无法访问 SqlConnectionManager 进行单元测试,但我可以在应用程序运行时访问它。非常感谢您阅读本文。任何帮助注册这都会很好。

0 投票
1 回答
744 浏览

c# - 使用 PrivateObject.Invoke 调用静态转换函数在单元测试中不起作用

方法:

单元测试:

例外:

我尝试了不同的方法,但没有工作。

0 投票
3 回答
1178 浏览

c# - 起订量与 PrivateObject 不兼容吗?

我正在尝试在模拟对象上测试私有方法。请冷静下来,我知道你要把你的干草叉拿出来。

我很清楚要说的一切都可以通过对我大喊 REFACTOR 来回答。我只需要一个直接的答案。有人看着我的眼睛告诉我这是不可能的。这是一个无法通过谷歌搜索的问题,所以我只需要听到它。

这就是我正在处理的问题。

这是我试图测试它。

和例外:

我正在尝试做的事情,尽管它很疯狂,可能吗?或者这对于单元测试来说是否过于狂妄?

0 投票
1 回答
7726 浏览

c# - 私有对象“尝试访问丢失的成员”异常

我正在尝试使用私有方法调用对象的私有方法。此方法采用三个参数。我尝试调用的方法的签名和调用此方法的代码如下所示

私有方法的签名:

我用来调用方法的代码:

异常消息:方法'Foo.SaveCallback' not found.

我调用私有方法的方式有问题还是其他设置有问题?

谢谢你

0 投票
5 回答
5602 浏览

c# - 测试私有静态方法抛出 MissingMethodException

我有这堂课:

现在我正在为它实施单元测试。由于该方法是私有的,我有以下代码:

mscorlib.dll 中出现“System.MissingMethodException”类型的异常,但未在用户代码中处理其他信息:尝试访问缺少的成员。

我究竟做错了什么?方法存在..

0 投票
1 回答
386 浏览

c# - PrivateObject NullReferenceException 以字符串 [] 作为参数调用方法

我正在尝试为带有string[]as 参数的私有方法编写单元测试。调用私有方法适用于PrivateObject类,但是当我尝试使用string[].

测试返回

System.NullReferenceException:对象引用未设置为对象的实例

在调用。

这是包含我需要调用的方法的类:

我尝试了以下方法:

0 投票
1 回答
1092 浏览

c# - 如何在 C# 中模拟 PrivateObject

我有这个代码:

“DoSomething”方法调用“SomeMethod”方法,该方法返回一个布尔类型。我如何模拟 SometMetod,这样当我调用它时,他会返回我需要的东西?

0 投票
1 回答
3282 浏览

c# - 在 C# 中使用具有多个参数的 PrivateObject 进行单元测试私有方法

我有一个像这样ClassA的私有方法的类DoSomething

参数类型不同,最后一个参数是 ref 参数。

我想对这个方法进行单元测试,我知道我可以使用 PrivateObject 这样做。但我不确定如何正确调用此方法。

我试过这个

,但我得到这个错误

System.ArgumentException :找不到指定的成员 (DoSomething)。您可能需要重新生成私有访问器,或者该成员可能是私有的并在基类上定义。如果后者为真,则需要将定义成员的类型传递给 PrivateObject 的构造函数。

我认为我做的一切都是正确的,但显然,我不是。

更新和解决方案

弄清楚了。从 Invoke 调用中删除 Type[] 可以修复它:

0 投票
2 回答
256 浏览

c# - 如何在 C# 中的 PrivateObject 上创建类型安全

我发现了一种对私有方法进行单元测试的绝妙方法。

这很好,除了我不喜欢方法名称作为字符串输入的方式。有没有办法建立一个“安全网”?我想键入方法名称,以便编译器可以在对象上不存在该方法时抛出编译器时错误。

私有方法:

单元测试:

我知道有些人认为我们不应该对私有方法进行单元测试。这不是这个问题的目的,所以让我们不要讨论这个问题并继续讨论这个话题。