小编msh*_*ren的帖子

使用Mocha进行Javascript测试时assert.equal和assert.deepEqual之间的区别?

我正在使用Mocha来测试Express.js应用程序中的一个小模块.在这个模块中,我的一个函数返回一个数组.我想测试数组对于给定输入是否正确.我是这样做的:

suite('getWords', function(){
    test("getWords should return list of numbers", function() {
        var result = ['555', '867', '5309'];
        assert.equal(result, getWords('555-867-5309'));
    });
});
Run Code Online (Sandbox Code Playgroud)

当它运行时,我得到以下断言错误:

AssertionError: ["555","867","5309"] == ["555","867","5309"]
Run Code Online (Sandbox Code Playgroud)

但是,当我将测试更改为a时assert.deepEqual,测试通过正常.我想知道这是否是==vs 的情况===,但如果我进入

[1,2,3] === [1,2,3]
Run Code Online (Sandbox Code Playgroud)

进入node.js命令行,我仍然得到假.

为什么数组不像其他值那样比较(例如1 == 1)?和assert.equal和assert.deepEqual有什么区别?

javascript arrays testing mocha.js

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

我可以在JavaScript中限制数组的长度吗?

我想显示产品浏览历史记录,因此我将产品ID存储在浏览器cookie中.

因为历史列表限制为5个项目,所以我将cookie值转换为数组,然后检查它的长度并减少冗余.

下面的代码是我尝试过的,但它不起作用; 数组项未被删除.

我想问一下如何限制数组长度,这样它只能存储5个项目?

要么

如何在数组索引4之后剪切项目?

var id = product_id;
var browseHistory = $.cookie('history');
if (browseHistory != null) {
  var old_cookie = $.cookie('history');
  var new_cookie = '';

  if (old_cookie.indexOf(',') != -1) {
    var arr = old_cookie.split(',');
    if (arr.length >= 5) {
      arr.splice(4, 1)
    }
  }

  new_cookie = id + ',' + old_cookie;
  $.cookie('history', new_cookie, { expires: 7, path: '/' });
} else {
  $.cookie('history', id, { expires: 7, path: '/' });
}
Run Code Online (Sandbox Code Playgroud)

javascript cookies jquery

41
推荐指数
6
解决办法
7万
查看次数

在编写配置文件时,使用ConfigParser而不是常规python.py文件有什么好处?

我一直在使用ConfigParser模块编写配置文件.然而,最近一个想法让我感到震惊; 为什么不使用纯Python呢?以此示例配置文件为例:

[parameters]
# Host
host = stackoverflow.com
port = 22
Run Code Online (Sandbox Code Playgroud)

要将这些值读入我的代码,我会这样做

import ConfigParser
config = ConfigParser.SafeConfigParser()
config.read('host.cfg')

host = config.get('parameters', 'host')
port = config.get('parameters', 'port')
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我有这样的配置文件:

# Host
host = 'stackoverflow.com'
port = 22
Run Code Online (Sandbox Code Playgroud)

在我的主要代码中,我可以这样做:

from host_cfg import *
Run Code Online (Sandbox Code Playgroud)

那么使用ConfigParser模块可以获得什么?每种方法的优缺点是什么?

python configuration module configuration-files

10
推荐指数
2
解决办法
1937
查看次数

使用金字塔的金字塔身份验证

在金字塔文档中,Sqlalchemy Dispatch Tutorial使用虚拟数据security.py.我需要使用mysql数据,所以我实现了这样:

我的登录代码

@view_config(route_name='login', renderer='json',permission='view')
def user_login(request):
    session = DBSession
    username = request.params['username']
    password = request.params['password']
    sha = hashlib.md5()
    sha.update(password)
    password = sha.digest().encode('hex')
    user = session.query(Users).filter(and_(Users.username==username,Users.password ==password)).count()   
    if(user != 0):
        headers = remember(request, username)
        return HTTPFound(location = '/index/',
                             headers =headers)
    else:
        print "error"
Run Code Online (Sandbox Code Playgroud)

以上使系统记住将使用的用户名security.py.下面,我使用它来获取用户所在的组.

from .models import (
    DBSession,
    Users,
    )

def groupfinder(userid, request): 
    session = DBSession()
    for instance in session.query(Users).filter(Users.username==userid):
        group = 'group:'+instance.group  
        lsth = {'userid':[group]}
        return lsth.get  ('userid')   
Run Code Online (Sandbox Code Playgroud)

这是使用金字塔授权的最佳方式吗?

python authorization pyramid

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

在本地和全局安装Express.js有什么好处

据我了解,有两种方法可以安装Express.js.

  1. 使用npm install express- 来自package.json或通过命令行.此方法将在node_modules文件夹中本地安装express.
  2. npm install express -g.此方法在您的计算机上全局安装程序包.

我只是想知道使用这两种方法的好处是什么.是否一个被认为是"最佳实践"而另一个?

node.js express

8
推荐指数
1
解决办法
2761
查看次数

有没有办法从Python [Django]进行异步函数调用?

我正在创建一个Django应用程序,它对上传的文件进行各种长计算.我不想让用户等待处理文件 - 我只是想向用户显示一个页面,读取的内容类似于"正在解析文件".

如何从视图中进行异步函数调用?

可能看起来像这样的东西:

def view(request):
    ...
    if form.is_valid():
        form.save()
        async_call(handle_file)
    return render_to_response(...)
Run Code Online (Sandbox Code Playgroud)

python django asynchronous

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

在IE中重叠的元素的垂直对齐

我有这种形式,我在Chrome和FF中完美呈现,但在IE中,完全不对齐.

应该是什么样的:

图片: 替代文字

HTML:

<!--image upload bit-->
                        <div class="portlet-content">
                        <div class="logoInfo">
                        <h3><strong>Large Logo</strong></h3>
                        <p>Width: 160px, Height: 20px | image will be resized automatically</p>
                        </div>
                    <div class="imageUploadLogo noLogo"><img id="agencyLogo" src="images/logo_silhouette.png" width="170px" height="32px"></div>
                    <a href="helper/uploadpic.php?lightbox[width]=360&lightbox[height]=140&lightbox[iframe]=1" class="lightbox"><div id="logo_uploada">Upload</div></a> 
                </div>
                <div class="clearfix"></div>
                    <hr></hr>
                    <!--//image upload bit-->
                    <!--office upload bit-->
                        <div class="portlet-content">
                        <div class="logoInfo">
                        <h3><strong>Office Image</strong></h3>
                        <p>Width: 160px, Height: 120px | image will be resized automatically</p>
                        </div>
                    <div class="imageUploadPhoto noPhoto"><img id="agencyLogo" src="images/office_silhouette.png" width="160px" height="120px"></div>
                    <a href="helper/uploadpic.php?lightbox[width]=360&lightbox[height]=140&lightbox[iframe]=1" class="lightbox"><div id="logo_uploada">Upload</div></a>
                    <div class="extraInfo">
                    <h3><strong>Photo of your office</strong></h3>
                    <p>Image …
Run Code Online (Sandbox Code Playgroud)

css internet-explorer

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

MySQL数据库中指定的两个主键

我正在尝试创建一个测试数据库,它是预先存在的数据库的副本.我正在使用Django模型(理论上与原始数据库一起使用的模型)来执行此操作.我最近继承了其他人的代码,并试图弄清楚代码到底发生了什么.

在模型中,表中的一个表有两列标识为主键.

        column1 = models.IntegerField(primary_key = True)
        column2 = models.IntegerField(primary_key = True)
        column3 = models.CharField(max_length = 30)
Run Code Online (Sandbox Code Playgroud)

当我尝试将此模型同步到测试数据库时 - 发生错误:

文件"/somePathHere/MySQLdb/connections.py",第36行,在defaulterrorhandler中引发错误类,errorvalue _mysql_exceptions.OperationalError:(1068,'多个主键定义')

它是在django文档中写的,Django不允许多个主键.但是,看看DESCRIBE [tablename]原始MySQL数据库中的输出,看起来这正是这里发生的事情:

        +------------+------------+------+-----+---------+-------+
        | Field      | Type       | Null | Key | Default | Extra |
        +------------+------------+------+-----+---------+-------+
        | IDENTIFIER | bigint(20) | NO   | PRI | NULL    |       |
        | TIMESTAMP_ | bigint(20) | NO   | PRI | NULL    |       |
        | VALUE_     | longtext   | YES  |     | NULL    |       |
        +------------+------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

请注意,IDENTIFIER和TIMESTAMP_都列为主键. …

mysql django primary-key models

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

测试Node.js,模拟并测试已经需要的模块?

我正努力在我的节点模块周围编写高质量的测试.问题是require模块系统.我希望能够检查某个必需模块是否有方法或其状态已更改.似乎有两个相对较小的库可以在这里使用:节点 - 轻轻嘲弄.然而,由于它们的"低调",它让我觉得要么人们不测试这个,要么就是我不知道的另一种做法.

模拟和测试所需模块的最佳方法是什么?

testing unit-testing mocking require node.js

6
推荐指数
2
解决办法
4623
查看次数

了解Vim中的窗口

我对缓冲区有所了解,但我不确定如何浏览窗口?我使用Ack插件和NERDTree.如果我在打开NERDTree窗口和主编码窗口的同时在Ack中搜索某些内容,我该如何在这三个不同的窗口之间切换?

偶尔,我不小心打开一个接管NERDTree窗口的文件,所以现在我有两个带代码的窗口和一个Ack窗口.然后我必须关闭我打开的缓冲区,最后关闭窗口,然后重新打开NERDTree.

vim

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