如何更改最小起订量中的输入参数?
How to change input parameter in Moq?
考虑
var list = new List<string>();
someObject.AddOne(list);
Assert.AreEqual(1, list.Count);
如何设置模拟?我期待
var mock = new Mock<SomeObject>();
var list = new List<string>();
mock
.Setup(so => so.AddOne(list))
.Callback<List<string>>(l => l.Add("derp"));
可以工作,但不会调用回调。
我无法更改 SomeObject,因为这是我使用的外部 API。
这个测试会成功:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using System.Collections.Generic;
namespace UnitTestProject
{
[TestClass]
public class UnitTest
{
public class SomeObject
{
public virtual void AddOne(List<string> aList) { }
}
[TestMethod]
public void SomeTest()
{
// Arrange
var mock = new Mock<SomeObject>();
mock.Setup(so => so.AddOne(It.IsAny<List<string>>()))
.Callback<List<string>>(l => l.Add("derp"));
var target = mock.Object;
var list = new List<string>();
// Act
target.AddOne(list);
// Assert
Assert.IsTrue(list.Contains("derp"));
}
}
}
考虑
var list = new List<string>();
someObject.AddOne(list);
Assert.AreEqual(1, list.Count);
如何设置模拟?我期待
var mock = new Mock<SomeObject>();
var list = new List<string>();
mock
.Setup(so => so.AddOne(list))
.Callback<List<string>>(l => l.Add("derp"));
可以工作,但不会调用回调。
我无法更改 SomeObject,因为这是我使用的外部 API。
这个测试会成功:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using System.Collections.Generic;
namespace UnitTestProject
{
[TestClass]
public class UnitTest
{
public class SomeObject
{
public virtual void AddOne(List<string> aList) { }
}
[TestMethod]
public void SomeTest()
{
// Arrange
var mock = new Mock<SomeObject>();
mock.Setup(so => so.AddOne(It.IsAny<List<string>>()))
.Callback<List<string>>(l => l.Add("derp"));
var target = mock.Object;
var list = new List<string>();
// Act
target.AddOne(list);
// Assert
Assert.IsTrue(list.Contains("derp"));
}
}
}