- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是这两个库的新手,在将它们用于大型项目之前,我需要澄清我的单元测试中低代码工作自动模拟的选项。
在谷歌上花了一些时间后,我得出的结论是,与其他一些 IOC/Mocking 产品配对不同,LightInject+Nsubstitute 没有现成的插件库来简化单元编排阶段无操作默认模拟的声明测试。
我已经阅读了关于如何使用临时增强模拟对象覆盖 LightInject 容器的 LightInject 文档,仅用于单元测试的范围 但是单元测试可能会触及的所有无作为默认隔离模拟呢?有没有办法在 LightInject 容器中自动创建它们?
我正在寻找的内部 IOC 容器行为是:
public class LightInject.ServiceContainer
{
..
public T GetInstance<T)
{
if (( this.RegisteredInterfaces.Any( i => i.Itype == T ) == false )
&& ( this.TemporaryUnitTestOverrides.Any( i => i.Itype == T ) == false ))
&& ( /* this container is configured with an automocking delegate */ ))
return autoMockCreatorDelegate<T>.Invoke();
}
// default do nothing mock
var calculator = Substitute.For<ICalculator>();
// Enhanced mock that will return 3 for .Add(1,2)
var calculator = Substitute.For<ICalculator>();
calculator.Add(1, 2).Returns(3);
最佳答案
我是 LightInject 的作者,我真的很想帮助你。
让我调查一下,然后再回复你。同时,您可能想在以下位置查看此库
LightInject.AutopMoq这是对 LightInject 容器的第三方贡献。它使用 Moq 而不是 NSubstitute,但一般概念应该与您所要求的相似。
话虽如此,我不久前做了一些工作,进一步简化了自动模拟,并将对其进行研究,看看如何将其与 NSubstitute 集成。
编辑
这是一个 super 简单的自动模拟实现,适用于任何“替代”框架。
using System.Diagnostics;
using LightInject;
using NSubstitute;
public interface IFoo { }
class Program
{
static void Main(string[] args)
{
var serviceContainer = new ServiceContainer();
serviceContainer.RegisterFallback((type, s) => true, request => CreateMock(request.ServiceType));
var foo = serviceContainer.GetInstance<IFoo>();
Debug.Assert(foo is IFoo);
}
private static object CreateMock(Type serviceType)
{
return Substitute.For(new Type[] { serviceType }, null);
}
}
关于ioc-container - 使用 LightInject 和 Nsubstitute 自动模拟,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445099/
我有一个用“NSubstitute”模拟的接口(interface),它包含返回 concreate 类的属性,即返回值不是接口(interface)。例如 public interface ISom
我有一个用“NSubstitute”模拟的接口(interface),其中包含返回 concreate 类的属性,即返回值不是接口(interface)。例如 public interface ISo
我有一个用“NSubstitute”模拟的接口(interface),其中包含返回 concreate 类的属性,即返回值不是接口(interface)。例如 public interface ISo
我正在使用 NSubstitute 通过 PartsOf() 来模拟一个类方法(我需要一些方法来工作)。它看起来像这样: var mock = Substitute.ForPartsOf(); moc
使用 NSubstitute。对于某些测试,我想断言替代者没有收到任何调用。我可以对界面中的每个方法使用 DidNotReceiveWithAnyArgs(),但这很乏味而且不够健壮(如果将新方法添加
使用 NSubstitute。对于某些测试,我想断言替代者没有收到任何调用。我可以对界面中的每个方法使用 DidNotReceiveWithAnyArgs(),但这很乏味而且不够健壮(如果将新方法添加
我有一个用 NSubstitute 伪造的对象,它有一个被调用两次的方法。我想验证该方法实际上已被调用两次(且仅调用两次)。我浏览了文档和谷歌,但没有运气。任何帮助,将不胜感激。谢谢。 最佳答案 NS
void ABC() { var foo = Substitute.For(); foo.When(x => x.Bar()).Do(x => counter++); ....
我有一个看起来像这样的类(class): public class MyClass { public virtual bool A() { return 5 ();
我在使用 NSubstitute 模拟带有输出参数的方法时遇到过这种情况。我不确定如何最好地用文本解释它,所以我将使用一些人为的示例和测试用例...... 在这个人为的示例中,我将使用 IDictio
void ABC() { var foo = Substitute.For(); foo.When(x => x.Bar()).Do(x => counter++); ....
我有一个看起来像这样的类(class): public class MyClass { public virtual bool A() { return 5 ();
对于下面的代码,我得到了这个断言失败,不知道为什么: Assert.AreEqual failed. Expected:. Actual:. public interface IA { voi
我对 NSubstitute、模拟和单元测试总体来说是新手。 我正在尝试使用 NSubstitute 删除测试类中的一些依赖项,但模拟对象中的方法的行为并不符合我的预期(根据我的配置方式)。以下是我在
假设我有一个类: public abstract class Test { internal abstract int Prop { get; } } 现在,我
我在单元测试中创建了 Person 和 AddressBook 类的替代品。AddressBook 类包含 Person 类型和名称的属性:SamplePerson。 public interface
我有一个测试,其中 NSubstitute 检查假类中的错误调用。当我像下面的代码一样进行测试时,Received(...) 方法会检查值 factory.featureClassName 是否返回一
我有一个带有以下声明的接口(interface): void MapServiceMessages(IEnumerable serviceMessages, List responseMessages
大家好,我是 NSubstitute 框架的新手。我正在尝试测试我的一些类(class),但是当我使用 NSubstitute 检查收到的电话时,它说没有收到匹配的电话。 我正在尝试测试 Tick()
我正在使用 Nsubstitute 进行模拟。为了减少代码,我想编写一个伪造通用属性的通用类: public class Tester where TValue: IValue { /
我是一名优秀的程序员,十分优秀!