第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

編碼測(cè)試時(shí)如何讓 CodeIgnitor 3 自動(dòng)加載?

編碼測(cè)試時(shí)如何讓 CodeIgnitor 3 自動(dòng)加載?

PHP
慕哥9229398 2023-04-28 14:10:59
我是 CI 的新手,正在努力了解它。我熟悉 Laravel 和 Symfony,我發(fā)現(xiàn)測(cè)試 CI 代碼非常困難。我正在考慮使用服務(wù)定位器模式來嘗試解決依賴注入限制,但現(xiàn)在我正在為自動(dòng)加載而苦苦掙扎。假設(shè)我有一個(gè)這樣的模型:<?phpclass FooModel extends CI_Model{            public function __construct()    {        parent::__construct();        $this->load->library('alertnotificationservice');    }}我想編寫一個(gè)如下所示的測(cè)試:<?phpnamespace Test\AlertNotification;// extends TestCase and offers reflection helper methodsuse Test\TestBase;class FooModelTest extends TestBase{    public function test_my_method()    {        $objectUnderTest = new \FooModel();    }}當(dāng)我運(yùn)行我的測(cè)試時(shí),我得到了錯(cuò)誤Error: Class 'CI_Model' not found。我正在使用 CodeIgnitor 3.1.2,它不使用 composer 或包含版本 4 手冊(cè)引用的 phpunit.xml.dist 文件。讓自動(dòng)加載發(fā)生以便我可以運(yùn)行測(cè)試的“正確”方法是什么?
查看完整描述

1 回答

?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

我還沒有找到令人滿意的方法來做到這一點(diǎn)。我最終創(chuàng)建了一個(gè)bootstrap.php包含在 phpunit.xml.dist 中的文件


它看起來像這樣:


<?php


require(__DIR__ . '/../vendor/autoload.php');

// this is a copy of the default index.php shipped with CodeIgnitor

// The system and application_folder variables are replaced

// Also, in this version we do not bootstrap the framework and rather include our own version below

require('loader.php');

// this is a modified version of system/core/CodeIgniter.php

// they do bootstrapping, routing, and dispatching in one place

// so we can't use the whole file because dispatching fails when running tests

require('framework.php');


// set up the test environment database connection

putenv('DATABASE_HOST=localhost');

putenv('DATABASE_USER=user');

putenv('DATABASE_PASSWORD=password');

putenv('DATABASE=control_panel');


// CI uses a singleton approach and creates an instance of a child of this class during dispatch

// We need to make sure that the singleton holder is populated

$controller = new CI_Controller();

這framework.php是該 CodeIgnitor 文件的精簡(jiǎn)版本,我在其中刪除了路由和調(diào)度邏輯。我已經(jīng)把這些文件作為要點(diǎn)


CI 中加載的癥結(jié)似乎存在于控制器中system/core/Controller.php,控制器旨在成為“讓 CI 可以作為一個(gè)大型超級(jí)對(duì)象運(yùn)行”的東西。該load_class函數(shù)(在 中聲明system/core/Common.php)負(fù)責(zé)查找和加載類文件。


我還應(yīng)該包括我的composer.json文件。我正在使用它進(jìn)行測(cè)試(CI 3.1.12 不使用作曲家)


{

    "require": {

        "guzzlehttp/guzzle": "^6.5"

    },

    "require-dev": {

        "phpunit/phpunit": "^9.1"

    },

    "autoload": {

        "psr-4": {

            "Test\\": "tests/"

        },

        "classmap": ["application/", "system/"]

    }

}

我真的很想避免加載所有東西,并希望能夠模擬出點(diǎn)點(diǎn)滴滴,但我對(duì) CodeIgnitor 適合這一點(diǎn)并不樂觀。


無論如何,這種方法至少可以讓我啟動(dòng)我的應(yīng)用程序。必須有更好的方法來做到這一點(diǎn),如果很難正確測(cè)試,我不敢相信該框架會(huì)如此受歡迎。


查看完整回答
反對(duì) 回復(fù) 2023-04-28
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)