Tag: nsubstitute

当我不期望它与NSubstitute一起调用函数时

在设置我的模拟调用函数时,我得到了一个我从NSubstitute没想到的行为。 行为的简化版本是 [Test] public void NSubstituteTest() { var mockedFoo = Substitute.For(); mockedFoo.GenerateString(Arg.Any()).Returns(x => GetValue(x.Args()[0])); mockedFoo.GenerateString(“0”).Returns(“hi”); string result1 = mockedFoo.GenerateString(“0”); string result2 = mockedFoo.GenerateString(“1”); Assert.AreEqual(“hi”, result1); Assert.AreEqual(“1”, result2); } private string GetValue(object val) { string returnValue = val != null ? val.ToString() : “I am null”; System.Diagnostics.Trace.WriteLine(returnValue); return returnValue; } 测试通过,但我得到输出:0 1 这表明调用了mockedFoo.GenerateString(“0”); 实际上导致调用GetValue()函数。 如果我对Moq做同样的事情: [Test] […]

Ninject:使用NSubstitute进行自动模拟?

任何人都可以提供帮助,我在使用Ninject和NSubstitute之间可用的自动模拟时遇到问题,实际上这个包是一个名为Ninject.MockingKernel.NSubstitute的ninject包,它应该允许我使用Ninject创建Ninject.MockingKernel.NSubstitute并返回实例注入Ninject.MockingKernel.NSubstitute 。 Moq和Rhinomocks似乎有一些例子,但我没有看到NSubstitute。 到目前为止我所拥有的是什么 this.kernel = new NSubstituteMockingKernel(); var summaryService = this.kernel.GetMock(); // GetMock not available 有人用吗?

检查对异步方法的Received()调用

当我运行以下代码时: [Test] public async Task Can_Test_Update() { var response = await _controller.UpdateAsync(Guid.NewGuid()); response.Valid.Should().BeTrue(); _commands.Received().UpdateAsync( Arg.Is( l => l.Status == Status.Updated)); } 如果我在“ _commands.Received().UpdateAsync ”之前添加“ await ”,它会抛出一个空引用exception。 我该如何阻止这种情况发生,或await没有必要?

如何使用TestProject中的NSubstitute将值设置为类的局部变量?

我需要使用NSubstitute进行模拟,并且需要将类LoanCreateHandler局部变量command设置为使用它的参数Z来模拟数据。 我有以下代码: public class ClassA { public string Prop1 { get; set; } public string Prop2 { get; set; } … // Here I have some other properties } public class CreateLoanCommand { public string X { get; set; } public string Y { get; set; } public ClassA Z { get; set; } } […]

NSubstitute检查已接来电不起作用

嘿伙计们我是NSubstitute框架的新手。 我正在尝试测试我的一些课程,但是当我使用NSubstitute检查收到的电话时,它说没有收到匹配的电话。 我正在尝试测试方法Tick()是否从track类接收update()。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ATM_System.Event; using ATM_System.EventDetection; using ATM_System.Region; using ATM_System.Track; namespace ATM_System { public class ATM { private List _tracks; private IRegion _region; private List _eventdetects; private List _events; public ATM() { _tracks = new List(); _region = new Region.Region(100000,100000); //could be changed by […]

NSubstitute测试单独工作,但在套件中抛出Unexpected Matcher Argument

我有一个unit testing,我使用.Returns()来返回一些示例数据: [TestMethod] public void TestRetrieveElementsInVersion() { IRetrieveElementSequence component = Substitute.For(); List list = new List { new UnconstructedElement{Version = “1”}, new UnconstructedElement{Version = “2”} }; component.RetrieveElements().Returns(list); // exception reported here const string target = “1”; IRetrieveElementSequence service = new RetrieveElementsInAVersion(component, target); IList result = service.RetrieveElements(); bool check = result.All(e => e.Version == target); Assert.IsTrue(check); […]

二维对象数组返回类型 – NSubstitute

我得到一个演员exception System.InvalidCastException:无法将类型为’System.Object []’的对象强制转换为’System.Object [,]’。 在Castle.Proxies.ITestProxy.Get2DArray()在TestTest.cs中的Scratch.TestFixture.Get2DArray():第17行 从下面: [TestFixture] public class TestFixture { [Test] public void Get2DArray() { Substitute.For().Get2DArray().Returns(new object[1,1]); } } public interface ITest { object[,] Get2DArray(); } 任何人都可以对此有所了解吗? 我认为这是一个NSubstitute错误?

使用带有NSubstitute的DbSet 和IQueryable 操作对象会返回错误

我想使用NSubstitute通过模拟DbSet对Entity Framework 6.x进行unit testing。 幸运的是, Scott Xu使用Moq提供了一个很好的unit testing库EntityFramework.Testing.Moq 。 因此,我修改了他的代码以适合NSubstitute并且它一直看起来很好,直到我想测试DbSet.Add() , DbSet.Remove()方法。 这是我的代码位: public static class NSubstituteDbSetExtensions { public static DbSet SetupData(this DbSet dbset, ICollection data = null, Func find = null) where TEntity : class { data = data ?? new List(); find = find ?? (o => null); var query = new InMemoryAsyncQueryable(data.AsQueryable()); […]

如何在NSubstitute中使用AutoFixture的示例

我经常使用NSubstitute。 我喜欢它。 我只是在研究AutoFixture。 看起来很棒! 我见过NSFstitute的AutoFixture,并在Moq中看到了一些如何使用此function的例子。 但我似乎无法将其翻译成NSubstitute。 我试过这个: var fixture = new Fixture().Customize(new AutoNSubstituteCustomization()); var addDest = Substitute.For(); 使用: public interface IPersonEntity { int ID { get; set; } string FirstName { get; set;} string LastName { get; set;} DateTime DateOfBirth { get; set; } char Gender { get; set; } } 我得到一个对象,但没有填充任何属性(类似于AutoFixture的点)。 我也尝试过: var fixture […]

NSubstitute – 收到异步 – “等待电话”警告

我试图validation使用正确的参数调用异步方法。 但是,我收到了警告: “因为没有等待这个调用,所以当前方法的执行在调用完成之前继续。考虑将’await’运算符应用于调用的结果”。 此警告显示在//Assert注释(下方)下方的代码行上。 我使用NSubstitute进行的测试如下: [Test] public async Task SimpleTests() { //Arrange var request = CreateUpdateItemRequest(); databaseHelperSub.ExecuteProcAsync(Arg.Any()).Returns(Task.FromResult((object)null)); //Act await underTest.ExecuteAsync(request); //Assert databaseHelperSub.Received().ExecuteProcAsync(Arg.Is( p => p.StoredProcName == StoredProcedureName && p.Parameters[0].ParameterName == “Param1” && p.Parameters[0].Value.ToString() == “Value1” && p.Parameters[1].ParameterName == “Param2” && p.Parameters[1].Value.ToString() == “Value2”)); } 被测单元underTest.ExecuteAsync(request)调用ExecuteProcedureAsync并执行await: var ds = await DatabaseHelper.ExecuteProcAsync(dbParams); 由于使用NSubstitute,在执行被测单元后需要Received()。 而在RhinoMocks中,您可以预期在执行测试单元之前进行调用。 RhinoMocks可以返回Task.FromResult()而NSubstitute不能。 RhinoMocks等效的工作原理如下: [Test] […]