- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚开始使用 FakeItEasy,第一次尝试就卡住了。我想伪造的接口(interface)有这样的方法:
byte[] ReadFileChunk(string path,int offset,int count,out long size);
我想看看参数是如何传递的,所以我使用了 ReturnsLazily。这是我的尝试:
long resSize;
A.CallTo(() => dataAttributesController
.ReadFileChunk(A<string>.Ignored, A<int>.Ignored, A<int>.Ignored, out resSize))
.ReturnsLazily((string path, int offset, int count) =>
{
return Encoding.UTF8.GetBytes("You requested: " + path + "(" + offset + "," + count + ")");
})
.AssignsOutAndRefParameters(123);
这会编译,但在运行时会生成此异常:
The faked method has the signature (System.String, System.Int32, System.Int32, System.Int64&), but returns lazily was used with (System.String, System.Int32, System.Int32).
这是正确的,但我不知道如何添加 out 参数。如果我将 ReturnLazily 部分更改为此:
.ReturnsLazily((string path, int offset, int count, out long size) =>
{
size = 0;
return Encoding.UTF8.GetBytes("You requested: " + path + "(" + offset + "," + count + ")");
})
它不会编译,我不明白错误:
error CS1593: Delegate 'System.Func<FakeItEasy.Core.IFakeObjectCall,byte[]>' does not take 4 arguments
error CS1661: Cannot convert lambda expression to delegate type 'System.Func<string,int,int,long,byte[]>' because the parameter types do not match the delegate parameter types
error CS1677: Parameter 4 should not be declared with the 'out' keyword
对于像我这样的新手,这看起来不喜欢 4 个参数,也不理解如何处理“out”。有人可以解释一下我应该如何阅读这些错误吗?一个工作示例也将非常受欢迎:-)
非常感谢!
--- 编辑 ---
这似乎可行:
A.CallTo(() => dataAttributesController
.ReadFileChunk(A<string>.Ignored, A<int>.Ignored, A<int>.Ignored, out resSize))
.ReturnsLazily(x =>
Encoding.UTF8.GetBytes("You requested: " + x.Arguments.Get<string>(0) + "(" + x.Arguments.Get<int>(1) + "," + x.Arguments.Get<int>(2) + ")"))
.AssignsOutAndRefParameters((long)123);
比我希望的可读性差一点,这是否接近 ReturnsLazily 的预期用途?
最佳答案
那个界面在你的控制之下吗?
byte[] ReadFileChunk(string path, int offset, int count, out long size);
如果是这样: out long size
是否与返回的 byte[]
的大小相同?在那种情况下,我会从接口(interface)方法中删除 size
参数,并按照您的预期使用“nice-to-read”ReturnsLazily
方法。
关于FakeItEasy ReturnsLazily with out 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18527635/
当我尝试伪造委托(delegate)类型时,我得到 System.InvalidCastException [TestMethod] public void TestDelegateFake() {
我有一个包含如下成员的界面: void ExecuteSqlCommand(string procedureName, SqlParameter[] parameters); 我正在使用 FakeIt
我可以在 FakeIteasy CallTo 断言中使用表达式树作为参数约束吗? 在具有以下签名的接口(interface)上给定一个方法: interface IRepository { T
我需要验证是否使用特定类型的对象调用了方法 这是我要测试它被调用的方法的接口(interface): interface IPlayer { void Send(object message);
我最近尝试使用 FakeItEasy,但如果不解决许多怪癖,我无法从具体类创建 Fake。 我尝试了以下方法: public class MyObject { public MyObject(){}
可以 FakeItEasy使用 .NET 核心?我已经通过 NuGet 安装了它,但我无法在项目中将它引用为 using FakeItEasy因为它没有找到。我在 NuGet 依赖项下进行了检查,我将
我正在尝试为依赖依赖项的方法编写单元测试,该依赖项提供接受对象并修改它的方法,但不会在“新路径”上返回它,例如作为返回值或通过引用参数。 public class Product { publ
我刚开始使用 FakeItEasy,第一次尝试就卡住了。我想伪造的接口(interface)有这样的方法: byte[] ReadFileChunk(string path,int offset,in
我正在尝试伪造对带有 out 参数的方法的调用,其中包含带有一些基本逻辑的 ReturnsLazily。理想情况下,我可以根据 ReturnsLazily 通过 AssignsOutAndRefPar
我有一个具有以下签名的方法。 Foo GetFooById( int id, params string[] children ) 此方法在名为 IDal 的接口(interface)上定义。 在我的
我有一些代码,其中我有一个假的配置根。我想检查是否进行了设置配置值的调用。 var fakeConfigRoot = A.Fake(); //Do something that will set co
我在 Math 类中有一个名为 GetNumber() 的函数。我想在第一次调用时返回 1,在第二次调用时返回 2,依此类推。我在 Mockito 中做过这样的事情 when(mathObj.GetN
有什么方法可以检索插入到伪造类中的伪造对象吗? 例如 假设我有以下接口(interface) + 类; public interface IFakeable { void FakeYou();
我想像这样设置我的假货: A.CallTo(() => this.repository.Create(A._)).Returns(XYZ); 哪里XYZ与在 A._ 处插入的变量相同 所以如果Crea
我试图从 child 那里伪造对 parent 公共(public)虚拟验证方法的调用但没有成功(使用 FakeItEasy。我有一个基类可以验证类似命令类的简单命令(我减少了为简单起见的代码):
我有一个用 FakeItEasy v2.2.0 编写的单元测试。 测试测试一个方法,让调用它MethodA调用MethodB。 简单类: public class Foo { public v
我使用 fake 很容易为我的对象生成假货。现在我测试是否调用了假对象上的一些方法。问题是我希望每个单元测试都将假的状态重置回原始状态。 我需要这个,因为我为每个单元测试类生成了一次伪造,所以我需要以
看来以下代码的行为与我预期的不同: using FakeItEasy; using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass]
我在单元测试中使用 FakeItEasy 作为模拟框架。方法 fakeUserService.AddUser 被模拟为返回新的 MwbeUser 对象,方法 AddUser 中有一些非空值 A.Ca
我有一个类型依赖于通过通用方法执行查询的外部组件。这是正在播放的内容的简化版本: public class UnitUnderTest { private IQueryEngine _engi
我是一名优秀的程序员,十分优秀!