You need to emulate what happens when you call [`Msf::ModuleSet#create`](https://github.com/rapid7/metasploit-framework/blob/10ac7a22afe34da7b59c51eeda2959f2eb890007/lib/msf/core/module_set.rb#L34-L64): The instance is [initialized](https://github.com/rapid7/metasploit-framework/blob/10ac7a22afe34da7b59c51eeda2959f2eb890007/lib/msf/core/module_set.rb#L55) from the class and then the creation event is [sent](https://github.com/rapid7/metasploit-framework/blob/10ac7a22afe34da7b59c51eeda2959f2eb890007/lib/msf/core/module_set.rb#L60) to the framework:

```ruby
instance = mod.replicant
instance.datastore['RHOST'] = ip.dup
framework.events.on_module_created(instance)
instance.check_simple
```

The `framework.events.on_module_created` is implemented as [Msf::Simple::Framework#on_module_created](https://github.com/rapid7/metasploit-framework/blob/10ac7a22afe34da7b59c51eeda2959f2eb890007/lib/msf/base/simple/framework.rb#L51-L53):

```ruby
  def on_module_created(instance)
    Msf::Simple::Framework.simplify_module(instance)
  end
```

[Msf::Simple::Framework.simplify_module](https://github.com/rapid7/metasploit-framework/blob/10ac7a22afe34da7b59c51eeda2959f2eb890007/lib/msf/base/simple/framework.rb#L123-L130) extends the `instance` with a module_type specific `Simple` module:

```ruby
 instance.extend(ModuleSimplifiers[instance.type])
```

It is this `extend` that finally gives your `instance` the `check_simple` method.