我很难让Mocha像预期的那样工作,我很乐意按照文档记录说,但是(似乎)没有太多关于实际运行的文档.
我已经使用它npm(全局和本地)安装它,每次运行时我得到:
$ mocha
mocha: command not found
Run Code Online (Sandbox Code Playgroud)
好的,所以我认为它不在我的身上PATH,所以我试着直接运行它,
$ ./node_modules/mocha/bin/mocha
execvp(): No such file or directory
Run Code Online (Sandbox Code Playgroud)
最后,我试着点击另一个bin文件,得到了,
$ ./node_modules/mocha/bin/_mocha
path.existsSync is deprecated. It is now called `fs.existsSync`.
.
? 1 tests complete (1ms)
Run Code Online (Sandbox Code Playgroud)
如何使用单个命令执行测试?誓言似乎让你,但我听说摩卡是更好的选择,我似乎无法让它正常工作.
关于我在第三次尝试中遇到的错误的任何想法?
编辑:
我在跑,
我正在尝试删除一个远程git分支,但是这个过程并没有像我期望的那样"完全"删除分支.
比方说,我正在删除一个名为的分支mybranch.为此,我运行以下命令,
git push origin :mybranch
Run Code Online (Sandbox Code Playgroud)
这将按预期删除分支,如果我这样做,git branch -a则不再在本地或远程列表中显示.
我遇到的问题是,如果我去另一个人的机器做了一段git pull时间分支存在,并且他们执行了一个git branch -a,它仍然在他们的列表中作为远程分支.
我们试过多个命令,pull,gc,prune,但没有什么是更新这个列表,而删除远程分支.
是否有一个命令同步(我只能假设是)远程分支列表的本地缓存,并删除任何不再存在的远程分支?
我正在寻找一个JavaScript库,它允许我使用我可以订阅和触发的自定义事件.我还需要事件名称/范围与消息队列中的主题类似地工作,您可以在其中订阅命名空间并获取该命名空间的所有事件.
例如,
var myCustomEventHandler = new CustomEventHandler();
myCustomEventHandler.bind('my.event', function(data) { console.log('Event 1'); });
myCustomEventHandler.bind('my.other.event', function(data) { console.log('Event 2'); });
myCustomEventHandler.bind('my.*', function(data) { console.log('Event 3'); });
myCustomEventHandler.trigger('my.event');
// Logs "Event 1" and "Event 3"
myCustomEventHandler.trigger('my.other.event');
// Logs "Event 2" and "Event 3"
myCustomEventHandler.trigger('my.something.else');
// Logs "Event 3"
Run Code Online (Sandbox Code Playgroud)
我可以写一些自定义的东西,但我更喜欢使用开源库(如果有的话).
干杯.
我正试图进行单元测试,看看它引入的明显的积极因素,我正在尝试为我前几天写的一个类写一个单元测试.(我知道这与TDD相反,请耐心等待)
我的班级,Image与其他一些人一起用于图像处理.
Image基本上包装GD图像资源并与其一起存储数据.例如,一个实例Image将始终包含它的当前状态,即调整大小时的新宽度/高度,原始图像数据等.
该Image班还包含方法,
$image->loadFromPath()Image实例的属性创建新的GD图像资源,例如,用于调整图像大小以保持背景透明度等.我正在努力的是如何使用PHPUnit正确地测试这个类.我已经完成了一些阅读,我对如何处理它有一些相互矛盾的想法,我不知道什么是正确的.我,我
那么,哪些是正确的,如果有的话?
我们目前正在清理工作中的git repo,因为有大量的分支和标签是不需要的.
我们已经完成了分支部分,但标签部分证明是麻烦的.
我们删除了遥控器上的分支机构,并要求我们的团队git pull --prune在其本地存储库中删除所述分支机构.
问题是,似乎没有办法用标签来做到这一点.我们可以非常容易地远程删除标签,但是当我们执行a git pull或gcor 时,我们无法将该更改传播到其他本地存储库remote prune.
关于如何做到这一点的任何想法?
或者我们是否必须阻止人们使用,git push --tags直到他们重新克隆回购?
在我们的CMS中,我们的用户可以使用TinyMCE编辑表单的错误消息.问题是,这些消息中的一些可能需要动态数据,例如"Your chosen name 'X' is invalid".
为此,我们使用令牌.使用上面的例子,我们的用户会输入"Your chosen name '{name}' is invalid",它将在渲染时被替换.
我正在为TinyMCE编写一个插件,以便更好地帮助用户管理这些令牌.他们会点击图标,从预定义列表中选择一个令牌,然后它会自动插入到内容中.
我遇到的问题是如何在内容编辑器中处理此令牌.目前,它只是可以编辑的文本,但我想要做的是让TinyMCE将其视为单个元素,以便可以删除,移动,但实际的令牌本身无法编辑.
我已经尝试noneditable通过将令牌包含在带有mceNonEditable类的范围中来使用插件,但这不符合预期,例如,如果令牌位于内容的末尾,则无法退格删除令牌在它之后键入等
因此,为了澄清,我本质上想要的是TinyMCE将某些文本视为图像.它将是一个坚固的块,也被视为一个字符/元素.
这可能吗?
谢谢.
我目前正在编写一个库,用于匹配内容中的特定单词.
基本上它的工作方式是将单词编译成正则表达式,并通过所述正则表达式运行内容.
我想要添加的功能是指定要匹配的给定单词是否必须开始和/或结束单词.例如,我有这个词cat.我指定它必须开始一个字,因此catering将匹配的cat是在开始,但ducat 不能匹配为cat不启动的话.
我想用字边界做这个,但在一些测试中我发现它不能像我期望的那样工作.
采取以下,
preg_match("/(^|\b)@nimal/i", "something@nimal", $match);
preg_match("/(^|\b)@nimal/i", "something!@nimal", $match);
Run Code Online (Sandbox Code Playgroud)
在上面的陈述中,我希望得到以下结果,
> false
> 1 (@nimal)
Run Code Online (Sandbox Code Playgroud)
但结果恰恰相反,
> 1 (@nimal)
> false
Run Code Online (Sandbox Code Playgroud)
在第一个,我会期望它失败,因为该组将吃掉@,留下nimal来匹配@nimal,这显然不会.相反,该组匹配一个空字符串,因此@nimal匹配,意味着@被认为是该单词的一部分.
在第二,我希望小组吃!剩下@nimal来匹配其余的(应该).相反,它似乎将这些!和@组合在一起形成一个单词,这可以通过以下匹配来确认,
preg_match("/g\b!@\bn/i", "something!@nimal", $match);
Run Code Online (Sandbox Code Playgroud)
任何想法为什么正则表达式这样做?
我只是喜欢一个清楚记录字边界是如何确定的页面,我找不到一个用于生活的人.
这是一个与Symfony有关的快速问题,但可能是一般的MVC问题.
例如,我的模型中有一个类WebUser.这个类有一个属性email_address.该值必须是唯一的WebUser.
现在,我已经做到了所以我所有的Symfony表单都验证了email_address它对于给定的是唯一的WebUser,但是我想知道我是否应该将此验证添加到模型中?
但这也让我想到,如果你真的验证set()模型中的每个方法?确定数据库中没有错误的数据结束似乎是一个明智的决定,但是大多数(如果不是全部)数据必须通过控制器,这也会验证.所以对我来说,似乎我两次运行相同的验证,它似乎毫无意义?
你对此有何看法?我仍然倾向于在模型中进行验证,因为它决定了业务逻辑,因此最有意义.
如果您应该在模型中进行验证,那么如何set()在表单框架正确处理的Symfony中抛出适当的错误?
谢谢.
我们发现了一个我一直在努力解决的奇怪问题。
我们时不时地对服务器进行部署,一台服务器将开始将错误流式传输到日志中,如下所示:
require_once(): Failed opening required '/var/www/CrrrectPath/Abstract.php'
(include_path='/var/www/') in /var/www/CorrectPath/Object.php on line 2
Run Code Online (Sandbox Code Playgroud)
问题并不总是include(). 有时,方法名称会以同样的方式被损坏(单个字符被替换为另一个字符)。
在生产中调试受影响的服务器后,我可以看到文件本身绝对没问题。我的直觉是文件的 opcache 在某种程度上被损坏了。
我们启用了“validate_timestamps”,所以我认为这些文件在中间重新读取是合理的rsync(作为部署的一部分,我们从一个文件夹同步到“live”文件夹)。然后,我们禁用“validate_timestamps”,现在正在执行opcache_reset()代码完全同步的操作。该问题发生的频率确实较低,但我们仍然会看到这种情况的发生。
还有其他人遇到过这个问题吗?对于解决方案有什么建议(除了完全改变我们的部署方式之外)?
有关信息,
$ php -v
PHP 7.0.21-1~ubuntu14.04.1+deb.sury.org+1 (cli) (built: Jul 6 2017 09:38:10) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.21-1~ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
Run Code Online (Sandbox Code Playgroud)
谢谢
这个问题与PHPUnit有关,虽然它应该是一个全局的xUnit设计问题.
我正在为一堂课写一个单元测试用例Image.
这个类的方法之一是setBackgroundColor().
我需要为此方法测试4种不同的行为,
array(255,255,255)array('red' => 255, 'green' => 255, 'blue' => 255)(这是GD功能的输出格式imagecolorsforindex())IMG_COLOR_TRANSPARENT目前,我已将所有这些包含在我的测试用例中的一个测试中testSetBackgroundColor(),但是我感觉这应该是4个单独的测试,因为测试变得很长并且做了很多.
我的问题是,我该怎么办?我是否将所有这些封装到Image测试用例的1个测试中,或者将上面的内容拆分为单独的测试,例如,
testSetBackgroundColorErrorstestSetBackgroundColorShorthandRGBtestSetBackgroundColorRGBtestSetBackgroundColorTransparent我在这里提出了有问题的测试http://pastebin.com/f561fc1ab.
谢谢
我正在努力解决何时使用几个PHP SPL异常,特别是在下面的场景中,
class MyClass {
protected $data1;
protected $data2;
public function setData1($data1) {
$this->data1 = $data1;
}
public function setData2($data2) {
$this->data2 = $data2;
}
public function invokeProcess() {
$this->validateData();
}
protected function validateData() {
if(!$this->data1) {
// Which Exception do I throw? See explanation below
}
if($this->data1 && $this->data2) {
// Which Exception do I throw? See explanation below
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个被构建的类.然后,用户在对象上设置一些数据,并调用进程.这个过程的第一件事是验证对象上的数据,以确保存在所需的数据,数据组合是否正确等,如果不是,则需要抛出异常.
那么我会抛出什么异常?
我的验证确实检查了两种情况,
对于#1,我左右为难BadMethodCallException,RuntimeException和LogicException.对于#2,我认为它只是一个LogicException?
那么,我使用哪些? …
我试图了解Symfony 1.4中的表单框架.我已经阅读了"更多与symfony"一书中非常详细的部分,但我仍然不确定如何实现简单的"更改密码"功能.
要求非常基本,
new_password,和confirm_new_password.两者都是输入字段.new_password字段将被验证为包含字母和数字的6到30个字符之间的字符串.confirm_new_password字段将被验证以new_password准确匹配该字段.现在,我现在实现了这个,
new_password字段中添加字符串验证器以检查字符串长度.confirm_new_password字段以确保填写.confirm_new_password在该new_password字段有效之前我不想验证该字段.现在到了我的问题.在阅读了上面提到的文章之后,我开始认为我应该在单个小部件或子形式中包含两个字段,因为它们相互依赖,而另一个则无用.
我想知道人们的想法是什么,如果有人实施了,他们是如何做到的?
谢谢
注意:没有current_password字段,因为这是我的管理区域.
php ×7
git ×2
javascript ×2
phpunit ×2
symfony1 ×2
unit-testing ×2
branch ×1
events ×1
exception ×1
forms ×1
frameworks ×1
html ×1
mocha.js ×1
node.js ×1
oop ×1
opcache ×1
regex ×1
tinymce ×1
validation ×1