问题标签 [rhino-mocks-3.5]
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.
c# - 如何指定该 Arg.Matches() 不应返回默认值(T)
我对 Rhino Mocks 有一点问题。
我有一个抽象类,其方法需要一个对象(在字符串下面的示例中)。该方法检查参数是否为空。
我有另一个类,它使用Foo
:
我想进行单元测试并检查是否使用正确的参数调用了DoSomething
类。Foo
我用Arg<T>.Matches()
这个。
现在,当我尝试运行此测试时,出现了ArgumentNullException
at the Expect(...)
。我查看了 Rhino Mocks 的代码,发现Match()
-Method 总是返回default(T)
,这是null
一个字符串(以及所有其他类)。所以签入DoSomething()
引发了ArgumentNullException
.
我知道,我可以为该接口提取一个接口Foo
并创建该接口的模拟,因此没有空检查。但是我想知道Rhino Mocks是否可以通过保留代码原样来解决这个问题(当然单元测试除外;-))。
c# - InvalidOperationException:委托返回值应该可以从
我在 Rhino Mock 的 Do Method 上遇到了一个例外。
System.InvalidOperationException :委托返回值应该可以从 MediaPlayerImpl.ScreenControl.ScreenCommunicatorState 分配
我不是很清楚如何解决它。下面是我的代码。它很容易理解。
c#-4.0 - RhinoMocks AssertWasCalled 抛出异常
我是 TDD 和 RhinoMocks 的新手。
我正在尝试测试 AssertWasCalled 但遇到问题。我的测试的构造函数如下:
我的测试是这样的:
我得到的错误是:
测试方法 Paxium.Music.WebUI.Tests.Controllers.AccountControllerTests.AccountControllerCallsWebAuthenticator_CreateSignInTicketForGoodLoginCredentials 抛出异常:Rhino.Mocks.Exceptions.ExpectationViolationException: IWebAuthenticator.CreateSignInTicket(Castle.Proxies.HttpContextBaseProxy7f274f09b6124e6da32d96dc6d3fface, "good-username"); 预期 #1,实际 #0。
我现在更改了我的代码如下 - 代码之前和之后:
前:
后:
我的测试现在通过了。当我的控制器被真正使用时,我如何在 contextBase 中注入?我正在使用结构图。
c# - Rhino Mock - 存根方法总是返回 null
我一直在试图弄清楚我正在编写的这个特定测试发生了什么,现在再次伸出手来看看是否有人可能知道发生了什么。
我有一个 ModeltoXml 方法,当我直接通过另一个测试类进行测试时,它很好。然而,在另一种方法中,我正在测试调用 ModeltoXml 我在 Rhino Mock 中创建的存根始终返回 null。
下面大致是我的代码如何查找我通过构造函数传递我的存根方法的测试。
为此测试调用的具体方法有如下一行:
ModeltoXml 方法的一个简单入口:
我的界面上有什么:
我创建了另一种基本方法,它将除外并返回一个字符串值。我在同一个班级中得到了这个工作,但是在测试中我不得不在存根上使用 .IgnoreArguments 选项。此后在调试时我看到了设置的返回值。
但是,当我尝试在我的测试类中有问题的代码行上做同样的事情时,我仍然看到在调试期间我的测试类中没有出现返回值。
所以我有点卡住了!在我的测试中,我在其他存根上得到了返回值,而正是这种特殊的方法/存根不会发挥作用。
谢谢。
更新
我发现的一个更简单的例子是在相同的测试下:
上面的例子表明,将我的模拟/存根对象传递给我的测试类,ModeltoXml 存根会发生一些事情。我看不出/想不出发生这种情况的任何原因。
c# - 期望电话不适用于模拟
我正在编写测试,因为CheckPassWord()
我认为 Expect 调用在我的 userMangerMock 上的行为不符合预期。
CheckPassWord() 内部调用 GetUser(),由于 GetUser() 需要更深入的内部调用,我决定返回一个stubUser
我相信 Expect() 的实现就足够了。请注意,以下调用var userInfo = userMangerMock.GetUser("TestManager");
正在返回stubUser
。但是, CheckPassword()
我假设stubUser
没有返回,因此测试失败。
如果以下 UT 中有任何错误,请纠正我。
c# - 如何在 IDataReader 的 GetName 中设置值?
我正在使用 Rhino Mocks 来测试以下方法。
有这样的事情,但不知道如何继续:
但是如何在GetName
测试方法中安排值?
c# - 存根在 RhinoMocks 的类构造函数中调用的方法
我的班级有这样的方法:
internal virtual Something CreateSomething(){...}
这样做是为了在测试中我可以存根CreateSomething()
返回一个模拟对象:
这工作正常,但现在CreateSomething()
在类构造函数中调用,然后再调用它,所以当我存根方法时,我的对象已经创建。
是否有不涉及更改设计的解决方法,在构建时传递存根方法?如果不是,我可以考虑更改设计以使用构造注入(我相信你们中的一些人无论如何都渴望建议!)但我宁愿先看看 Rhino 是否支持这个用例。
c# - Rhino.Mocks:如何创建具有不同程序集全名的类的存根
我尝试创建一个类的两个模拟对象,但它创建了两个具有相同程序集“FullName”的模拟。
上面的断言是正确的,我预计是错误的。
我知道我可以创建另一个提供 CheckId 的接口,但我想用生产代码创建相同的环境。
所以我的问题是为什么 rhino mock 为不同的对象生成相同的类名,即使 CheckId 属性不同。
有没有其他方法可以在不更改测试逻辑的情况下创建同一类的不同模拟实例?
如果您需要其他详细信息,请告诉我。提前致谢。
更新:已解决
我找到了比手动更新属性更好的解决方案。制作 MyClassA 的泛型类型解决了这个问题。如下所示;
由于不同的虚拟类型,每个生成的模拟都是相同基本类型的不同实例。毕竟,正如我所料,断言是错误的。
c# - Rhino 嘲笑 AssertWasCalled 不起作用
我使用 Rhino Mocks 编写了以下测试用例来说明我的问题:
无论我是直接比较列表还是使用 Arg<>.Matches(..) 语法,测试用例都会在 AssertWasCalled() 行上失败。我还尝试使用 MockRepository.GenerateStub<>(..) 而不是 GenerateMock<>(..),这也失败了。由于 list.Clear(); 它失败了 调用 DoSomethingWithList() 之后的行,这导致在 AssertWasCalled() 时列表也是空的。这是 RhinoMocks 的错误吗?我会假设 RhinoMocks 会在调用断言函数时以某种方式记录参数的快照,但看起来 RhinoMocks 一直在使用同一个对象?
在我遇到这个问题的真实案例中,我正在测试的函数的参数被包装在 using() 语句中,这导致 AssertWasCalled 无法测试传递的参数的相同效果。