小编Ste*_*ose的帖子

你如何安装和运行Node.js测试模块Mocha?安装后获取"mocha:command not found"

我很难让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)

如何使用单个命令执行测试?誓言似乎让你,但我听说摩卡是更好的选择,我似乎无法让它正常工作.

关于我在第三次尝试中遇到的错误的任何想法?

编辑:

我在跑,

  • Ubuntu 11.10 64位
  • Node.js 0.7.5
  • npm 1.1.8
  • 摩卡0.14.1
  • 应该是0.6.0

mocha.js node.js

81
推荐指数
3
解决办法
9万
查看次数

如何"正确"删除远程git分支,即为所有用户更新远程分支列表?

我正在尝试删除一个远程git分支,但是这个过程并没有像我期望的那样"完全"删除分支.

比方说,我正在删除一个名为的分支mybranch.为此,我运行以下命令,

git push origin :mybranch
Run Code Online (Sandbox Code Playgroud)

这将按预期删除分支,如果我这样做,git branch -a则不再在本地或远程列表中显示.

我遇到的问题是,如果我去另一个人的机器做了一段git pull时间分支存在,并且他们执行了一个git branch -a,它仍然在他们的列表中作为远程分支.

我们试过多个命令,pull,gc,prune,但没有什么是更新这个列表,而删除远程分支.

是否有一个命令同步(我只能假设是)远程分支列表的本地缓存,并删除任何不再存在的远程分支?

git branch

34
推荐指数
2
解决办法
6254
查看次数

JavaScript的自定义事件库.有吗?建议?

我正在寻找一个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)

我可以写一些自定义的东西,但我更喜欢使用开源库(如果有的话).

干杯.

javascript events

17
推荐指数
2
解决办法
1万
查看次数

PHPUnit测试问题 - 如何对我的班级进行单元测试

我正试图进行单元测试,看看它引入的明显的积极因素,我正在尝试为我前几天写的一个类写一个单元测试.(我知道这与TDD相反,请耐心等待)

我的班级,Image与其他一些人一起用于图像处理.

Image基本上包装GD图像资源并与其一起存储数据.例如,一个实例Image将始终包含它的当前状态,即调整大小时的新宽度/高度,原始图像数据等.

Image班还包含方法,

  • 从文件,字符串数据或URL创建自己,例如 $image->loadFromPath()
  • 从当前Image实例的属性创建新的GD图像资源,例如,用于调整图像大小以保持背景透明度等.
  • 克隆GD图像资源以在操作类中使用

我正在努力的是如何使用PHPUnit正确地测试这个类.我已经完成了一些阅读,我对如何处理它有一些相互矛盾的想法,我不知道什么是正确的.我,我

  1. 为每个类的方法编写一个测试.我在某处读到了我应该测试的每一种方法.但是,有些方法会运行其他方法(我也可以添加),因此您将拥有一系列依赖关系.但我也读到每个单元测试应该独立于另一个.那么如果是这样的话我该怎么办?
  2. 将每个测试写为类的使用路径.我还读到某个地方,每个测试应该代表您可以在课程中使用的1个路径/使用路径.因此,如果您涵盖所有用途,您最终将获得完整的代码覆盖率.

那么,哪些是正确的,如果有的话?

php phpunit unit-testing

13
推荐指数
2
解决办法
2613
查看次数

你如何删除git标签并通过git pull传播所述删除给其他人?

我们目前正在清理工作中的git repo,因为有大量的分支和标签是不需要的.

我们已经完成了分支部分,但标签部分证明是麻烦的.

我们删除了遥控器上的分支机构,并要求我们的团队git pull --prune在其本地存储库中删除所述分支机构.

问题是,似乎没有办法用标签来做到这一点.我们可以非常容易地远程删除标签,但是当我们执行a git pullgcor 时,我们无法将该更改传播到其他本地存储库remote prune.

关于如何做到这一点的任何想法?

或者我们是否必须阻止人们使用,git push --tags直到他们重新克隆回购?

git

12
推荐指数
2
解决办法
2273
查看次数

如何将TinyMCE编辑器中的元素视为不可编辑的单个项目?

在我们的CMS中,我们的用户可以使用TinyMCE编辑表单的错误消息.问题是,这些消息中的一些可能需要动态数据,例如"Your chosen name 'X' is invalid".

为此,我们使用令牌.使用上面的例子,我们的用户会输入"Your chosen name '{name}' is invalid",它将在渲染时被替换.

我正在为TinyMCE编写一个插件,以便更好地帮助用户管理这些令牌.他们会点击图标,从预定义列表中选择一个令牌,然后它会自动插入到内容中.

我遇到的问题是如何在内容编辑器中处理此令牌.目前,它只是可以编辑的文本,但我想要做的是让TinyMCE将其视为单个元素,以便可以删除,移动,但实际的令牌本身无法编辑.

我已经尝试noneditable通过将令牌包含在带有mceNonEditable类的范围中来使用插件,但这不符合预期,例如,如果令牌位于内容的末尾,则无法退格删除令牌在它之后键入等

因此,为了澄清,我本质上想要的是TinyMCE将某些文本视为图像.它将是一个坚固的块,也被视为一个字符/元素.

这可能吗?

谢谢.

html javascript tinymce

11
推荐指数
1
解决办法
5436
查看次数

正则表达式单词边界在PHP中的工作原理是什么?

我目前正在编写一个库,用于匹配内容中的特定单词.

基本上它的工作方式是将单词编译成正则表达式,并通过所述正则表达式运行内容.

我想要添加的功能是指定要匹配的给定单词是否必须开始和/或结束单词.例如,我有这个词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)

任何想法为什么正则表达式这样做?

我只是喜欢一个清楚记录字边界是如何确定的页面,我找不到一个用于生活的人.

php regex

10
推荐指数
1
解决办法
1万
查看次数

你应该在模型中验证吗?(基于Symfony的问题,但与一般的MVC有关)

这是一个与Symfony有关的快速问题,但可能是一般的MVC问题.

例如,我的模型中有一个类WebUser.这个类有一个属性email_address.该值必须是唯一的WebUser.

现在,我已经做到了所以我所有的Symfony表单都验证了email_address它对于给定的是唯一的WebUser,但是我想知道我是否应该将此验证添加到模型中?

但这也让我想到,如果你真的验证set()模型中的每个方法?确定数据库中没有错误的数据结束似乎是一个明智的决定,但是大多数(如果不是全部)数据必须通过控制器,这也会验证.所以对我来说,似乎我两次运行相同的验证,它似乎毫无意义?

你对此有何看法?我仍然倾向于在模型中进行验证,因为它决定了业务逻辑,因此最有意义.

如果您应该在模型中进行验证,那么如何set()在表单框架正确处理的Symfony中抛出适当的错误?

谢谢.

php validation model-view-controller symfony1

6
推荐指数
1
解决办法
1108
查看次数

我们在我们的服务器上看到“损坏的”opcache。知道如何解决吗?

我们发现了一个我一直在努力解决的奇怪问题。

我们时不时地对服务器进行部署,一台服务器将开始将错误流式传输到日志中,如下所示:

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)

谢谢

php opcache

5
推荐指数
1
解决办法
786
查看次数

单元测试分离

这个问题与PHPUnit有关,虽然它应该是一个全局的xUnit设计问题.

我正在为一堂课写一个单元测试用例Image.

这个类的方法之一是setBackgroundColor().

我需要为此方法测试4种不同的行为,

  1. 试图设置无效的背景颜色.将测试多个无效参数.
  2. 尝试使用短手RGB阵列设置有效的背景颜色,例如 array(255,255,255)
  3. 尝试使用标准RGB数组设置有效的背景颜色,例如array('red' => 255, 'green' => 255, 'blue' => 255)(这是GD功能的输出格式imagecolorsforindex())
  4. 尝试使用透明常量设置有效的背景颜色 IMG_COLOR_TRANSPARENT

目前,我已将所有这些包含在我的测试用例中的一个测试中testSetBackgroundColor(),但是我感觉这应该是4个单独的测试,因为测试变得很长并且做了很多.

我的问题是,我该怎么办?我是否将所有这些封装到Image测试用例的1个测试中,或者将上面的内容拆分为单独的测试,例如,

  • testSetBackgroundColorErrors
  • testSetBackgroundColorShorthandRGB
  • testSetBackgroundColorRGB
  • testSetBackgroundColorTransparent

我在这里提出了有问题的测试http://pastebin.com/f561fc1ab.

谢谢

php phpunit unit-testing design-patterns

4
推荐指数
1
解决办法
175
查看次数

在进程之前验证集数据时,我应该使用哪个SPL异常?

我正在努力解决何时使用几个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. 缺少数据,即尚未设置的数据.
  2. 数据组合不好.

对于#1,我左右为难BadMethodCallException,RuntimeExceptionLogicException.对于#2,我认为它只是一个LogicException

那么,我使用哪些? …

php oop design-patterns exception

3
推荐指数
1
解决办法
1791
查看次数

Symfony表单框架 - 实现更改密码功能的最佳方法?

我试图了解Symfony 1.4中表单框架.我已经阅读了"更多与symfony"一书中非常详细的部分,但我仍然不确定如何实现简单的"更改密码"功能.

要求非常基本,

  1. 会有两个字段new_password,和confirm_new_password.两者都是输入字段.
  2. new_password字段将被验证为包含字母和数字的6到30个字符之间的字符串.
  3. confirm_new_password字段将被验证以new_password准确匹配该字段.

现在,我现在实现了这个,

  • 在表单中添加2个新字段.
  • new_password字段中添加字符串验证器以检查字符串长度.
  • 将字符串验证器添加到confirm_new_password字段以确保填写.
  • 然后验证新密码是有效的,并与自定义帖子验证器中的确认密码相匹配.我之所以这样做,是因为confirm_new_password在该new_password字段有效之前我不想验证该字段.

现在到了我的问题.在阅读了上面提到的文章之后,我开始认为我应该在单个小部件或子形式中包含两个字段,因为它们相互依赖,而另一个则无用.

我想知道人们的想法是什么,如果有人实施了,他们是如何做到的?

谢谢

注意:没有current_password字段,因为这是我的管理区域.

php forms frameworks symfony1

2
推荐指数
1
解决办法
3213
查看次数