Smocks icon indicating copy to clipboard operation
Smocks copied to clipboard

Multiple RunActions in same AppDomainContext

Open marlonscalabrin opened this issue 7 years ago • 0 comments

I would like to run multiple actions in a unique AppDomainContext. For example: execute a setup once and in the tests run Actions using previous Setup, sharing test context. I my case I am writing my tests with Gherkin and it runs multiple steps (methods) to complete a single test. I take a look in the code and it is simple to add this feature, something like this:

public partial class Smock : IDisposable
{
    public AppDomainContext CreateAppDomainContext(Action<ISmocksContext> action, Configuration configuration)
    {
        IAssemblyRewriter rewriter = CreateAssemblyRewriter(action, configuration);

        using (AppDomainContext context = AppDomainContext(rewriter, configuration.Logger))
        {
            configuration.Logger.Info("Creating service locator for app domain {0}", context);
            context.Invoke(new Action(() => ServiceLocator.Instance = CreateServiceLocator(configuration)));

            return context;
        }
    }

    public void RunActionInAppDomainContext(Action<ISmocksContext> action, Configuration configuration, AppDomainContext context)
    {
        configuration.Logger.Info("Invoking action in app domain {0}", context);
        context.Invoke(action, _serviceLocator.Resolve<ISmocksContext>());
    }
}

marlonscalabrin avatar Aug 03 '17 12:08 marlonscalabrin