不能对一个类型多次调用 Swap.AllInstances()
Can not call Swap.AllInstances() more than once on a type
我有一个测试用例有问题,标题中的异常被抛出。
仅当静态方法 fake 也存在于测试中时才会抛出异常。
我的推测是 StaticMethods fake 也在进行交换。如果是这种情况,我如何伪造静态方法并将实例替换为我的实例伪造?
[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);
不能肯定,因为没有使用 TypeMock
库,但我认为问题出在您的 Swap
方法中:
Isolate.Swap.AllInstances<Order>()
当您调用 Order
class 的所有 实例 时,不涉及 static 方法(因为它们不是 Order
实例方法,它们是 typeof(Order)
实例方法中的 Type
),所以,可能 Swap
方法可以以不同的方式使用,像这样:
Isolate.Swap.Static_SOMETHING_HERE.With(order);
我在 Typemock 工作,
刚刚检查了这个问题,我可以确认这是一个错误。
此问题的解决方法非常简单,您只需切换调用顺序即可。例如
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);
会在以后的版本中修复
我有一个测试用例有问题,标题中的异常被抛出。
仅当静态方法 fake 也存在于测试中时才会抛出异常。
我的推测是 StaticMethods fake 也在进行交换。如果是这种情况,我如何伪造静态方法并将实例替换为我的实例伪造?
[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);
不能肯定,因为没有使用 TypeMock
库,但我认为问题出在您的 Swap
方法中:
Isolate.Swap.AllInstances<Order>()
当您调用 Order
class 的所有 实例 时,不涉及 static 方法(因为它们不是 Order
实例方法,它们是 typeof(Order)
实例方法中的 Type
),所以,可能 Swap
方法可以以不同的方式使用,像这样:
Isolate.Swap.Static_SOMETHING_HERE.With(order);
我在 Typemock 工作, 刚刚检查了这个问题,我可以确认这是一个错误。 此问题的解决方法非常简单,您只需切换调用顺序即可。例如
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);
会在以后的版本中修复