Интеграционный тест Microsoft Orleans: проверка вызова на другое зерно - PullRequest
0 голосов
/ 03 августа 2020

У меня есть 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, но я не знаю, как заменить этот макет, переопределяя его реализацию по умолчанию.

...