我正在使用 NSubstitute 来模拟我的一个类/接口(interface)。我的类实现的函数之一应该返回一个 List 类型的对象。
但是当我尝试使用 _mockedObject.MyFunction().Returns(myList) 时,它给我一个错误,提示我无法在我的列表和 Func 类型的对象之间进行转换。
我想我可以使用一些 ToString() 函数将我的列表作为字符串传递并将其转换回来?但这似乎不是特别干净,因为我期望从我的函数返回一个列表。
我从有关使用依赖注入(inject)进行单元测试的视频中看到,您可以使用 Moq (https://www.youtube.com/watch?v=DwbYxP-etMY) 从模拟对象返回对象。如果我无法使用 NSubstitute 返回对象,我正在考虑切换到它。
最佳答案
这是一个如何返回 List<string>
的例子来自 NSubstitute 模拟的对象:
using System.Collections.Generic;
using NSubstitute;
using Xunit;
public interface ISomeType {
List<string> MyFunction();
}
public class SampleFixture {
[Fact]
public void ReturnList() {
var _mockedObject = Substitute.For<ISomeType>();
var myList = new List<string> { "hello", "world" };
_mockedObject.MyFunction().Returns(myList);
// Checking MyFunction() now stubbed correctly:
Assert.Equal(new List<string> { "hello", "world" }, _mockedObject.MyFunction());
}
}
您所描述的错误听起来涉及不同的类型。希望上面的示例将有助于显示问题的根源,但如果没有,请发布 _mockedObject
的示例界面和测试(如@jpgrassi 的评论中所建议)。
关于c# - 如何从带有 NSubstitute 的模拟对象返回一个对象(即 List<string>)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57383809/