我正在测试类的方法。但是,其中一些具有非相关内容的属性,这使得测试失败。从C#中的模拟对象中删除方法属性
例如,我有这个类(在VB.net
但可能是C#
以及)
<AttributeOne()>
<AttributeTwo(Arg1, Arg2)>
Public Overridable Function SomeMethod() As Object
' Stuff
End Function
当我打电话SomeMethod
从我的嘲笑对象,它将提出一些例外,因为属性尝试做一些东西在单元测试环境中是不可能的。
[TestFixture]
public class SomeClassUnitTests
{
[Test]
public void TestSomeMethod()
{
var someClassMock = new Mock<SomeClass>() { CallBase = true };
//Exception is thrown
var result = someClassMock.Object.SomeMethod();
}
}
测试写在C#
。我正在使用Moq
和Nunit
如何在单元测试时忽略这些属性?
如果这样,你违反了单一责任原则是这样的。当您应该解决原因时,您正试图治疗症状。 –
@HimBromBeere我正在测试'SomeMethod',并且此方法具有一些评估全局安全信息的属性(例如,如果用户已登录并且有东西)。然而,在单元测试中没有这样的信息,所以测试失败了,我无法测试该方法,明白了吗? – RafaelC
@DavidL你能再详细一点吗? – RafaelC