使用RHinomock进行测试
本文关键字:测试 RHinomock 使用 | 更新日期: 2023-09-27 18:00:03
我有一个类要测试,与普通类不同,使用Rhinomock测试很难,因为它的构造函数注入了依赖项,该依赖项不是单个接口,而是接口对象的数组。请帮我设置所有的东西来使用rhinomock编写测试。
namespace ClinicalAdvantage.Domain.UserAppSettings
{
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
public class Agg : IAgg
{
private readonly ISource[] sources;
public Agg(ISource[] sources)
{
this.sources = sources;
}
public JObject GetAll()
{
var obj = new JObject();
foreach (var source in this.sources)
{
var token = source.GetCurr();
if (token != null)
{
obj.Add(new JProperty(source.Name, token));
}
}
return obj;
}
}
ISource是一个有2个实现的接口。GetALL()遍历每个实现的类对象,并在每个对象中调用GetCurr方法并聚合结果。我必须存根GetCurr方法才能返回标准Jtoken。我无法创建此类Agg的mock或ISource的存根。
public interface ISource
{
string Name { get; }
bool Enabled { get; }
JToken GetCurr();
}
}
类似的东西可能会起作用:
[TestClass]
public class AggTest
{
private ISource Isource;
private Agg agg;
[TestInitialize]
public void SetUp()
{
Isource = MockRepository.GenerateMock<ISource>();
agg = new Agg(new [Isource]);
}
[TestMethod]
public void GetAll()
{
Isource.Stub(x => x.GetCurr()).
Return(new JToken());
var jObject = agg.GetAll();
Assert.IsNotNull(jObject);
// Do your assertion that all JProperty objects are in the jObject
// I don't know the syntax
}
}