C# Rhino mocks资产通过索引器和args调用
我试图断言,以下是一个被称为C# Rhino mocks资产通过索引器和args调用,c#,unit-testing,rhino-mocks,rhino-mocks-3.5,C#,Unit Testing,Rhino Mocks,Rhino Mocks 3.5,我试图断言,以下是一个被称为 cacheManager.Site[typeName] = items.Where(x => !requestContext.DefaultSites.Contains(x.SiteId)).ToList(); 我无法计算带有args的索引器的语法,我有这个 manager.Site.AssertWasCalled(x => x[TypeName] = Arg<IList<FcCacheObject>>.Matches(y =&
cacheManager.Site[typeName] = items.Where(x => !requestContext.DefaultSites.Contains(x.SiteId)).ToList();
我无法计算带有args的索引器的语法,我有这个
manager.Site.AssertWasCalled(x => x[TypeName] = Arg<IList<FcCacheObject>>.Matches(y => y.Count.Equals(1)));
manager.Site.AssertWasCalled(x=>x[TypeName]=Arg.Matches(y=>y.Count.Equals(1));
但是它要求索引器也使用args,我该怎么做呢?非常简单:)
我假设您的索引器参数类型是string
。然后在断言中而不是
x[TypeName]
使用
x[Arg.Is.Equal(TypeName)]
因此,您的断言应该如下所示:
manager.Site.AssertWasCalled(x => x[Arg<string>.Is.Equal(TypeName)] = Arg<IList<FcCacheObject>>.Matches(y => y.Count.Equals(1)));
manager.Site.AssertWasCalled(x=>x[Arg.Is.Equal(TypeName)]=Arg.Matches(y=>y.Count.Equals(1));
很简单:)
我假设您的索引器参数类型是string
。然后在断言中而不是
x[TypeName]
使用
x[Arg.Is.Equal(TypeName)]
因此,您的断言应该如下所示:
manager.Site.AssertWasCalled(x => x[Arg<string>.Is.Equal(TypeName)] = Arg<IList<FcCacheObject>>.Matches(y => y.Count.Equals(1)));
manager.Site.AssertWasCalled(x=>x[Arg.Is.Equal(TypeName)]=Arg.Matches(y=>y.Count.Equals(1));
您使用的是模拟还是存根?显示您尝试测试的方法的完整签名以及测试设置代码会有所帮助。您使用的是模拟还是存根?显示您尝试测试的方法的完整签名以及测试设置代码将有所帮助。