gpt4 book ai didi

c# - FakeItEasy:重置假电话历史/忽略电话

转载 作者:太空狗 更新时间:2023-10-29 22:22:18 24 4
gpt4 key购买 nike

我想重置虚假来电历史记录或忽略来电。

在测试的类构造函数的 Init 方法中调用了假断言方法,我想忽略此调用,因为它不是测试操作的一部分。

举个例子:

[TestClass]
public class UnitTest1
{
private MyFakedClass myFakedObject;
private SUT sut;

[TestInitialize]
public void Init()
{
myFakedObject = A.Fake<MyFakedClass>();
sut = new SUT(myFakedObject); //constructor calls myFakedObject.AssertedMethod()
}

[TestMethod]
public void TestMethod1()
{
sut.TestedMethod(); //TestedMethod calls myFakedObject.AssertedMethod() again...
A.CallTo(() => myFakedObject.AssertedMethod()).MustHaveHappened(Repeated.Exactly.Once);
//...So this is false
}
}

最佳答案

我喜欢@forsvarir 的回答。我倾向于认为来自构造函数内部的调用很重要。

但是,如果您确实需要这样做:

FakeItEasy版本≥3.2.0时,可以使用ClearRecordedCalls:

Fake.ClearRecordedCalls(fake);

2.0.0 ≤ FakeItEasy version < 3.2.0 时,考虑 forsvarir 的减法(FakeItEasy: Reset Fake Calls History / Ignore Call)。

FakeItEasy 版本 < 2.0.0 时,你可以使用作用域:

[Test]
public void TestMethod1()
{
using (Fake.CreateScope())
{
sut.TestedMethod(); // calls myFakedObject.AssertedMethod() again
A.CallTo(() => myFakedObject.AssertedMethod())
.MustHaveHappened(Repeated.Exactly.Once);
}
}

使用范围会导致 MustHaveHappened 仅查看从范围内发出的调用。

您还可以在 TestInitialize 中创建作用域,并在 TestCleanup 方法中处理它,如果您想在外部保留 using您所有的测试方法。

关于c# - FakeItEasy:重置假电话历史/忽略电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29095019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com