当前位置: 首页 > 知识库问答 >
问题:

Yii2 Codeception路由无效?

长孙嘉
2023-03-14

我试图设置验收测试使用代码欺骗在Yii2.到目前为止,安装还不错,但我有一个路线问题。

当我这样做时:codeception运行acceptance

我得到的反馈是:

1) Failed to ensure login page works in LoginCept (./acceptance/LoginCept.php)

Step  I fill field "input[name="LoginForm[username]"]",""
Fail  Form field by Label or CSS element with    'input[name="LoginForm[username]"]' was not found.

Scenario Steps:

 3. $I->fillField("input[name="LoginForm[username]"]","")
 2. // I am going to submit login form with no data
 1. $I->amOnPage("/backend/web/index-test.php/")

页面上存在名为LoginForm[username]的输入,但Codeception显然没有获得正确的页面。

应该进行/backend/web/index测试。php中也有approt路径吗?当我请求approt/backend/web/index测试时。php在浏览器中一切正常。

谢谢你的指点。亚历克斯

更新:特此通知验收内容。一套yml:

# Codeception Test Suite Configuration

# suite for acceptance tests.
# perform tests in browser using the Selenium-like tools.
# powered by Mink (http://mink.behat.org).
# (tip: that's what your customer will see).
# (tip: test your ajax and javascript by one of Mink drivers).

# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.

class_name: AcceptanceTester
modules:
        enabled:
    - PhpBrowser
    - tests\codeception\common\_support\FixtureHelper
# you can use WebDriver instead of PhpBrowser to test javascript and ajax.
# This will require you to install selenium. See http://codeception.com/docs/04-AcceptanceTests#Selenium
# "restart" option is used by the WebDriver to start each time per test-file new session and cookies,
# it is useful if you want to login in your app in each test.
#        - WebDriver
    config:
        PhpBrowser:
# PLEASE ADJUST IT TO THE ACTUAL ENTRY POINT WITHOUT PATH INFO
            url: http://localhost:8080
#        WebDriver:
#            url: http://localhost:8080
#            browser: firefox
#            restart: true

根据以下评论更新:

我迷路了。我尝试硬编码路径,甚至尝试硬编码localhost网址,但后来我得到了这样的回应:

$I->amOnPage("/backend/web/index-test.php/localhost/www/yii2KickDish/backend/web") 

这显然是一个虚假的网址......那么我如何才能让代码欺骗解决到正确的位置?

共有1个答案

公西良骏
2023-03-14

我也有同样的问题。

似乎构建在AcceptanceTesterActions特性中的"amOnPage"方法在yii2 url模式下运行不佳。

我就是这样解决的。

创建从AcceptanceTester扩展的类MainTester

namespace tests\codeception\master\Step\Acceptance;

use tests\codeception\master\AcceptanceTester;

class MainTester extends AcceptanceTester
{
    public function amOnPage($url)
        {
           $page = \Yii::$app->getUrlManager()->createUrl($url);
           return parent::amOnPage($page);
        }
}

然后在我的Cest课上

use tests\codeception\master\Step\Acceptance\MainTester as AcceptanceTester;

class TestClassCest
{
    public function testMethod(AcceptanceTester $I)
    {
        $I->amOnPage('/example/something');
    }
}
 类似资料:
  • react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击

  • C1B无线云路由配置零门槛,无线组网快速扩容,钉钉免密一键连网安全便捷。 安装方式 桌面平放 配置说明 设备通电和连网 配置:连接WiFi、打开钉钉 绑定团队,可设置上网人员范围,选中的人员才可连网 设置网络名称 配置完成后,WiFi将重启,员工会收到连网工作通知 扩容添加更多C1B 无线组网,灵活简便 智能办公网络管理 智能办公网络 如何连网 员工连网 通过钉钉授权免密一键连网,无需输入密码,也

  • 例如,我们可能希望一些路线只有在用户登录或接受条款和条件后才可访问。 我们可以使用路由哨兵来检查这些条件并控制对路由的访问。 路由哨兵还可以控制用户是否可以离开某个路由。 例如,假设用户已将信息键入页面上的表单,但尚未提交表单。 如果这时离开页面,他们将丢失信息。 如果用户尝试离开路由而不是提交或保存信息,我们可以提示用户。 Angular 提供了五种路由拦截哨兵: CanActive 激活拦截

  • 每个路由可以有不同的属性; 一些常见的属性是: path - 应用程序在特定路由上时在浏览器中显示的URL component - 当应用程序在特定路由上时要呈现的组件 pathMatch - 默认为’prefix’的可选属性。 确定是匹配完整的网址还是仅匹配开头。 当定义一个具有空路径字符串的路径设置pathMatch为’full’时,否则它将匹配所有路径。 children - 表示此路由的子

  • 通过Group可以实现路由分组,Group 路由分组可以简化你的路由撰写: 有两种方法来使用Group: 第一种,创建Group对象,通过Group方法传入 g := tango.NewGroup() g.Get("/1", func() string { return "/1" }) g.Post("/2", func() string { return "/2" }) o :=

  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act