我目前有一个问题,我必须在遗留代码中解决,以使我们与PHP扩展的交互正常工作(Singleton测试问题).
因此,我不想在使用应用程序运行常规生产代码时执行此代码.因此,如果正在执行的代码作为测试的一部分执行,我需要检查常规PHP代码.
关于如何确定这个的任何建议?我想到了一个与测试文件本身存在相关的定义变量(我们不会将测试发送给客户),但是我们的开发人员需要Extension才能正常工作,而CI服务器需要运行测试.
是否建议在PHPUnit.xml文件中设置Global?其他想法?
@internal
在PHPDocs中使用时标记的含义是什么?它是如何工作的?我已阅读此标记的文档并获得此定义.
@internal标记用于表示关联的结构元素是此应用程序或库内部的元素.它也可以在长描述中用于插入仅适用于该软件开发人员的文本.
我得到了它的要点,但我不明白的是我将如何在项目中实际使用它?我已经阅读了这个例子,我的理解是标记为一个功能@internal
意味着它意味着它被用作软件的一部分而不被外部的东西使用.例如,在PHP库中,如果函数被标记为@internal
它不是库提供的公共API的一部分.
我的问题:
@internal
正确的吗?如果没有,那么正确的用法是什么?@internal
功能,暗示它们不打算被使用?我如何正确使用标记为@internal
?的功能?我正在与Typescript和Jest一起尝试为我的Angular和Ionic应用程序测试某些组件,但是问题不仅仅限于Angular或Ionic。因此,我正在尝试使Jest的模拟功能起作用。
我只是在创建一个虚拟类,我想尝试模拟函数的响应以查看是否可以覆盖行为。
开玩笑
export class AClass {
constructor() { }
GetOne():any {
return 1;
}
GetTwo():any {
return 2;
}
}
Run Code Online (Sandbox Code Playgroud)
玩笑样张
import { AClass } from './jest-mock';
// const mockGet = jest.fn( () => { return 3; } ); // Tried this to return 3?
const mockGet = jest.fn();
jest.mock('./jest-mock', () => {
return jest.fn().mockImplementation( () => {
return { GetOne: mockGet };
});
});
describe('Testing Jest Mock is working', () => {
it('should support mocking out the component', …
Run Code Online (Sandbox Code Playgroud) 我使用脚本打开浏览器和一堆选项卡,以便当我不小心关闭浏览器时,后台仍然打开一个小窗口(垃圾邮件窗口等)。问题是,当我将 Google Chrome 设置为从中断处继续时,当我重新启动计算机或 Google Chrome 时,我只会打开一个带有选项卡的窗口,而不是固定的选项卡和选项卡组。
有没有办法从命令行创建选项卡组?
我尝试了几种方法来执行此操作,但我能找到的脚本只会在浏览器中打开选项卡,实际上不允许我创建选项卡组。
我尝试过使用:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" google.com mysite.com
这会将页面加载为选项卡,但我无法创建选项卡组。
我尝试过Python
python -m webbrowser google.com mysite.com
无论如何我看不到创建选项卡组。
我有一个抽象类,其中包含常用方法,我希望测试,所以我不必在扩展此类的每个类中继续测试它们.
abstract class Class1 implements iClass1
{
const VALUE = 'A';
private $Return;
public function __construct($Field = NULL)
{
if( ! is_null($Field) )
$this->SetField($Field);
}
public function GetField()
{
return $this->Return;
}
public function SetField($Field)
{
if (strlen($Field) != 3)
throw new CLASS1_EXCEPTION('Field "' . $Field . '" must be 3 digits.');
$this->Return = $FieldCode;
}
abstract function CalculateData();
}
Run Code Online (Sandbox Code Playgroud)
我想创建基本的测试用例,然后测试构造函数,GetField和其他函数,然后我的其他测试文件可以测试抽象函数.
我希望能够测试const没有改变,字段抛出异常等...
测试:
class TEST_CLASS1 extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
require_once('CLASS1.php');
}
public function testConstants()
{
$this->assertEquals(CLASS1, 'A'); …
Run Code Online (Sandbox Code Playgroud) 我有一个包含许多列的简单表格,我希望在调整浏览器窗口大小时自动缩小列。在table-responsive
与引导工作,但我在寻找一个角材质类似的东西。我试图避免有 2 个表定义,并且我不想在 CSS 中自己做这个。Angular Material 有没有标准的方法来解决这个问题?
<table class="mdl-data-table mdl-js-data-table mdl-shadow--2dp" flex>
<thead>
<th class="mdl-data-table__cell--non-numeric">Date</th>
<th class="mdl-data-table__cell--non-numeric">Time</th>
<th class="mdl-data-table__cell--non-numeric">Park</th>
<th class="mdl-data-table__cell--non-numeric">Home Team</th>
<th class="mdl-data-table__cell--non-numeric">Away Team</th>
<th class="mdl-data-table__cell--non-numeric">Win/Loss</th>
</thead>
<tbody>
<tr ng-repeat="game in games">
<td class="mdl-data-table__cell--non-numeric">{{game.GameDate | SLS_Date}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.GameTime | SLS_Time:'HH:mm' }}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.VenueName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.HomeTeamName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.AwayTeamName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.WinLoss}}</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
请注意,我在这里使用了 Material Design Lite 表,因为 Angular Material 今天没有表。同样的问题,包括使用 flex 和网格。
我猜新的 Material 世界不喜欢表格,所以最好的选择是更改布局以不使用表格。
最初,我对 DatePipe 进行了一个简单的扩展,以从我们的标准(YYYYMMDD 格式)转换日期值,以便 Angular 中的 DatePipe 可以使用它。
export class SlsDatePipe extends DatePipe implements PipeTransform {
constructor(Locale:string) {
super(Locale);
}
/**
* Convert the data from the numeric YYYYMMDD to the Javascript date format
* @param DateValue SLS Formatted number in the YYYYMMDD style
* @param args Angular Date Pipe args to control the output format
* @returns Text output following the Javascript date() formats
*/
public transform(DateValue:number, args:string):string | null {
const DateString:string = DateValue.toString();
const Year:number = parseInt(DateString.substr(0, …
Run Code Online (Sandbox Code Playgroud) 我是PHPUnit的新用户,我将现有的测试(断言)转换为PHPUnit框架,以提供更好的测试环境和代码覆盖率.但是,我需要知道如何尝试让PHPUnit使用我们的测试代码结构.
我们的项目目录类似于以下内容:
Application1/
CREDIT_CARD.class - CREDIT_CARD的类命名约定
CREDIT_CARD.class.test - CREDIT_CARD.class的自动测试
File.php - 应用程序文件
File.php.test - File.php的自动测试
File2.php
File2.php.test - File2.php的自动化测试
Application2/
ANOTHER_CLASS.class
ANOTHER_CLASS.class.test
DifferentFile.php - 应用程序文件
DifferentFile.php.test - File.php
lib/
UTIL/
SHARED_CLASS.class的 自动化测试
SHARED_CLASS.class.test
VISUAL/
VISUAL_TOOL.class
VISUAL_TOOL.class.test
我需要知道如何配置PHPUnit测试,以便我可以在lib/UTIL/.test中运行测试(使用setUp()方法加载类文件然后是lib/VC / .test,由Application1和Application2测试跟随(如果成功).我看到提到了一个PHPUnit_xml文件和一个bootstrap文件,但我找不到一个参考模板来看看这些是否是我需要的.任何帮助,将不胜感激.
我知道文档是指文件名的test.php添加,但我希望不必更改我们的结构和命名约定,因为我希望能够运行混合的文件,直到它们全部转换过来到PHPUnit框架.更改名称将导致我们公司的程序更改和开发人员的培训,我正在努力避免.
在此先感谢您的任何帮助.
PHP_CodeSniffer中是否有设置显示失败的嗅探?我将输出与我们的编码标准进行比较,逐个使用很难破译哪个测试失败,看看我们可能想忽略哪个.
如果有一种简单的方法来显示故障嗅探,那么我可以更轻松,更快地完成配置.
这是一个简化开发的问题,也是一个最佳实践问题.
<?php
class FOO implements Iterator
{
....
}
class BAR extends FOO
{
....
}
class OTHER extends FOO implements Iterator
{
....
}
?>
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,BAR还有Iterator接口吗?如果是这样,每次无论如何定义界面(如OTHER)或将BAR定义视为最佳实践是否更好?
我简化了这个例子,因为我们正在使用FOO的抽象类,我们希望确保有Iterator支持,然后可以在BAR类中重写它以便在元素之间移动.我们希望强制为子类定义一些函数,但是想要继承其他方法,并且仍然使用基本迭代器,而不必在子类上定义接口.
php ×3
phpunit ×3
unit-testing ×2
angular ×1
angular11 ×1
angularjs ×1
codesniffer ×1
inheritance ×1
jest ×1
oop ×1
phpdoc ×1
phpstorm ×1
pipe ×1
tabs ×1
typescript ×1