繁体   English   中英

使用Behat / Mink和Behat Laravel Extension测试多租户Laravel应用程序

[英]Testing multi-tenancy Laravel applications using Behat / Mink and Behat Laravel Extension

我正在构建一个多租户SaaS应用程序,我试图用Behat编写测试,使用Mink和Behat Laravel扩展

注册帐户后,您将在网站{account}.tenancy.dev上获得自己的子域名

我的behat.yml文件看起来像这样:

default:
    extensions:
        Laracasts\Behat:
            # env_path: .env.behat
        Behat\MinkExtension:
            default_session: laravel
            base_url: http://tenancy.dev
            laravel: ~

我直接遇到问题,因为当我尝试测试我的注册流程时,我得到404错误测试,新子域可以访问,所有数据都已正确保存,手动测试过程工作和子域路由作品。

我想知道是否有任何方法可以使用Behat以及如何设置Behat / Mink使用通配符子域来测试SaaS应用程序?

我正在Homestead VM中运行测试。

base_url: http://tenancy.dev配置用于在您的mink步骤(IE“/ home”)中使用相对路径URL时生成完全限定的域URL。

当您想要访问与base_url指定的域不同的域时,您所要做的就是在步骤中使用完全限定的域URL,如“ http://test.tenancy.dev/fully/qualified ”。

因此,使用base_url配置将您将用于大多数步骤的内容设置为相对URL,然后显式指定异常的完整域。

When I create an account named foo And GET "http://foo.tenancy.dev/ping" Then I get a 200 response code When I GET "/home" Then the response contains "Sign Up"

如果您的大多数测试都是针对子域的,请将其设置为base_url并在必要时明确指定您的顶级域。

您可以使用xip.io解析子域, 例如 ,如果您无法访问CI服务器上的/ etc / hosts文件,则该子域尤其有用。

要将{account}.tenancy.dev路由到本地网络服务器,您可以使用解析为127.0.0.1的account.tenancy.dev.127.0.0.1.xip.io

片刻之后,我重新讨论了这个问题,发现了一个在我的FeatureContext.php使用的相当简单的解决方案:

$this->setMinkParameter('base_url', $url);

这会更改其使用的任何方案的基本URL:

/**
 * @Given I visit the url :url
 */
public function visitDomain($url)
{
    $this->setMinkParameter('base_url', $url);
    $this->visit('/');
}

以下列方式使用:

Scenario: Test Multi Tenancy
  Given I have a business "mttest"
  When I visit the url "http://mttest.example.com"
  Then I should see "mttest"

显然这有点做作,但确实表明我打算做的事情是可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM