我有一个测试用例存在标题中引发异常的问题。
只有当静态方法假在测试中也存在时才抛出异常。
我的假设是StaticMethods假冒也在进行交换。如果是这种情况,我怎么能伪造静态方法并用我的实例伪替换实例?
[Test]
[Isolated]
[Factory("TruckDispatchData")]
public void TruckDispatchTest(
IEnumerable<DeliveryInfo> deliveryInfo,
bool expectedResult)
{
Isolate.Fake.StaticMethods(typeof(Order), Members.MustSpecifyReturnValues);
var order = Isolate.Fake.Instance<Order>(Members.MustSpecifyReturnValues, ConstructorWillBe.Ignored, BaseConstructorWillBe.Ignored);
Isolate.Swap.AllInstances<Order>().With(order);
答案 0 :(得分:2)
我在Typemock工作, 刚检查过这个问题,我可以确认这是一个错误。 此问题的解决方法非常简单,您只需切换调用顺序即可。 e.g。
var order = Isolate.Fake.Instance<Order>(Members.MustSpecifyReturnValues, ConstructorWillBe.Ignored, BaseConstructorWillBe.Ignored);
Isolate.Swap.AllInstances<Order>().With(order);
Isolate.Fake.StaticMethods(typeof(Order), Members.MustSpecifyReturnValues);
将在未来版本中修复。
答案 1 :(得分:0)
不能肯定地说,因为没有使用TypeMock
库,但我认为问题出在您的Swap
方法中:
Isolate.Swap.AllInstances<Order>()
当您调用Order
类的所有实例时,不会涉及静态方法(因为它们不是Order
实例方法,它们是Type
实例方法的typeof(Order)
,因此,可能是Swap
方法可以以某种不同的方式使用,如下所示:
Isolate.Swap.Static_SOMETHING_HERE.With(order);