2

我有一个测试用例,它有一个问题,标题中的异常被抛出。

只有当静态方法 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);
4

2 回答 2

2

我在 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);

它将在未来的版本中修复。

于 2015-03-24T10:02:27.450 回答
0

不能肯定地说,因为没有使用TypeMock库,但我认为问题出在你的Swap方法上:

Isolate.Swap.AllInstances<Order>()

当您调用类的所有实例时,不涉及静态方法(因为它们不是实例方法,它们是实例方法),因此,方法可以以不同的方式使用,如下所示:OrderOrderTypetypeof(Order)Swap

Isolate.Swap.Static_SOMETHING_HERE.With(order);
于 2015-03-18T08:03:17.493 回答