У меня есть Grain в Орлеане, и мне нужно провести на нем интеграционный тест.
public class MyGrain : IMyGrain
{
public async Task A()
{
var otherGrain = GrainFactory.GetGrain<IOtherGrain>(0);
var result = //calculations
await otherGrain.SetResult(result);
}
}
Пока это мой интеграционный тест:
[Fact]
public Task CallA_ShouldCalculateRightResult()
{
// Arrange
TestClusterBuilder builder = new TestClusterBuilder();
builder.AddSiloBuilderConfigurator<MySiloConfiguratior>();
builder.AddClientBuilderConfigurator<MyClientConfigurator>();
var cluster = _builder.Build();
cluster.Deploy();
var grain = cluster.GrainFactory.GetGrain<IMyGrain>(0);
// Act
await grain.A();
// Assert
// I should verify that OtherGrain.SetResult method is called with the right result
}
Я хочу проверить в этом интеграционном тесте OtherGrain.SetResult вызывается с правильным результатом. Если это модульный тест, он может имитировать MyGrain с реализацией по умолчанию, но поскольку я делаю интеграционный тест, мне нужно получить зерно от фабрики зерна. Я думал насмехаться над IOtherGrain, но я не знаю, как заменить этот макет, переопределяя его реализацию по умолчанию.