AutoMoq によって作成されたすべての Moq-mocks がデフォルトで Fixture によって作成された値をメソッドの戻り値として返すように設定することで、時間を節約できるかどうかを調べたいと思います。
これは、次のようなテストを行う場合に役立ちます。
[TestMethod]
public void Client_Search_SendsRestRequest()
var client = fixture.Create<Client>();
// Could be removed by implementing the mentioned functionality
Mock.Of(JsonGenerator).Setup(j => j.Search(It.IsAny<string>())).Returns(create("JsonBody")));
client.Search(fixture.Create("query"));
Mock.Of(client.RestClient).Verify(c => c.Execute(It.IsAny<RestRequest>()));
Mock.Of(client.RestClient).Verify(c => c.Execute(It.Is<RestRequest>(r => record(r.Body) == record(client.JsonGenerator.Search(query)))));
}
生成された値はプロキシ内 (?) にキャッシュする必要があることに注意してください。チェックするために、同じ値を「凍結」する必要があります。また、モックを設定するとSetup
、作成された値が上書きされます。
では、これを行うために AutoMoq モックを変更するにはどうすればよいでしょうか?
それが機能することを確認する簡単なテストは次のようになります。
[TestMethod]
public void MockMethodsShouldReturnCreatedValues()
{
Guid.Parse(new Fixture().Create<ITest>().Test());
}
public interface ITest
{
string Test();
}