【发布时间】:2013-12-17 17:03:09
【问题描述】:
我正在使用最小起订量,但 verifyAll 方法调用失败。我不知道我做错了什么。
要测试的类:
namespace ConsoleApplication2
{
public class SomeUtil
{
public static List<Person> underAgePerson = new List<Person>();
public static List<Person> females = new List<Person>();
public static List<Person> males = new List<Person>();
public static List<Person> deletePersons = new List<Person>();
public SomeAdapter adapter;
public SomeUtil()
{
this.adapter = new SomeAdapter();
}
public void Valid(List<Person> persons)
{
foreach (Person p in persons)
{
if (p.Name == null)
{
deletePersons.Add(p);
}
if (p.Age < 18)
{
if (!deletePersons.Contains(p))
{
deletePersons.Add(p);
}
underAgePerson.Add(p);
}
adapter.SetGender(p);
if (p.Gender.Equals("Male", StringComparison.InvariantCultureIgnoreCase))
{
males.Add(p);
}
else if (p.Gender.Equals("Female", StringComparison.InvariantCultureIgnoreCase))
{
females.Add(p);
}
}
foreach (Person p in deletePersons)
{
persons.Remove(p);
}
deletePersons.Clear();
}
}
}
SomeUtil 类:
namespace ConsoleApplication2
{
public class SomeAdapter
{
public virtual Person SetGender(Person p)
{
if (string.IsNullOrEmpty(p.Gender))
{
p.Gender = "Male";
}
return p;
}
}
}
单元测试:
[TestClass]
public class SomeUtilTest
{
Mock<SomeAdapter> adapter;
List<Person> persons;
SomeUtil util;
[TestInitialize]
public void Initialize()
{
adapter = new Mock<SomeAdapter>();
persons = new List<Person>();
util = new SomeUtil();
}
[TestCleanup]
public void CleanUp()
{
adapter.VerifyAll();
}
[TestMethod]
public void Valid_WithEmptyName_ShouldRemove()
{
Person person = new Person();
person.Gender = "";
person.Age = 1;
persons.Add(person);
Person result = new Person();
result.Age = 19;
result.Gender = "Female";
result.Name = "Dannie";
adapter.Setup(a => a.SetGender(person)).Returns(result);
int count = persons.Count;
util.Valid(persons);
Assert.AreEqual(count - 1, persons.Count);
}
}
【问题讨论】:
标签: c# visual-studio-2012 moq