![](/img/trans.png)
[英]Behat testing in laravel with javascript - not using test environment
[英]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
并在必要时明确指定您的顶级域。
片刻之后,我重新讨论了这个问题,发现了一个在我的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.