加载中…
博文
标签:

protractor

分类: 程序员

应该想到这个东西就是不可见的!

搞了两天,百思不得其解,明明手工操作可见的按钮,自动测试时就是报看不见。

在Mac下面执行的时候, Chrome没跳到前台来,也就没去点开看具体的样子。

在Ubuntu下面执行的时候,就看见浏览器自动打开各种操作,看了很多遍也没看出异常。

最后终于有一次,看见它启动浏览器执行的时候,看着只有一半宽度的浏览器在动,

忽然明白了,有些元素在只有一半宽度的情况下就是看不见的!

原来原因就在于Protractor默认没有使用全屏浏览器进行操作!

把这句话加到测试的最前面:

browser.driver.manage().window().maximize();​​

在Mac下发现这条居然无效,还先要设置具体的长宽才行:

browser.driver.manage().window().setSize(1400, 900);

browser.driver.manage().window().maximize();

一切正常了。​

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

前端

protractor

分类: 程序员

看上去最基本的要求却让我寻找了一段时间的答案。

我的目的是测试如下一段代码:

​测试的想法是把链接的内容都取到一个数组中,再来检查这个数组。

于是写成了这个样子:

element.all(by.css('.btn-group ​.dropdown-menu li a')).getText().then( (menus) => {

console.log(menus);

...

期望的结果是: [ '发起流程', '用户管理', '修改密码', '注销' ]

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

zenpencils

分类: Zenpencils中文翻译


原文:http://zenpencils.com/comic/fear/

中文翻译主页: http://zenpencils.chenxiao.info/

微信公众号:哲思漫话


阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

node

log4js

express

分类: 程序员

我的要求很明确:配置简单, 自动进行日期文件分割。

比较了一下, log4js比较符合自己的要求。

server端配置如下:

const log4js = require('log4js');

log4js.configure({

  //appenders是记录的类型,这里我要同时使用两种:文件和控制台显示

  //文件是一种永久记录,控制台是为了调试方便(不用每次都tail -f)​

  appenders: {

    logfile: { type: 'dateFile', filename: 'logs/yapin.log' },

    display: { type: 'console' }

  },

  //categories就是对如何使用上述定义的类型的定义

  //本例中我选择同时使用​

  categories: { default: { appenders: ['logfile', 'display'], level: 'debug' } }

});

//这里的yapin代表应用的名称, 'yapin'这串字符会出现在logg

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

express

mocha

supertest

照理说单元测试和集成测试应该严格区分的。

单元测试就是不调用任何外部资源的功能性测试。

但是在NodeJs+Express+Mongodb​的环境下,实在忍不住要以单元测试的方式

来测试express的各种应用,实在是太方便了。

1. Express的主程序server.js

原程序的最后是:http.createServer(app).listen(4000);

因为要进行测试需要改为:

var server = http.createServer(app).listen(4000);

module.exports = server;

2. ​测试程序


​// before和after里面要有测试环境的打开和关闭

// 在这个例子中before涉及在数据库中插入一条测试记录和启动服务器​

// ​after涉及删除测试记录和关闭服务器

var server;

describe('login', () => {

//​ 注意使用了async/await, 因为必须将这些异步操作顺序执行

  before( async () => {

    await userData.addNew('testUser', 'testBumen');

    server = await require('se

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

问题:我有一个module,功能是插入一条记录到数据库中,如何写这个module让它返回promise, 从而可以在主程序中使用async/await来进行同步操作?

数据库(mongodb)本身的操作就是返回promise的,但是直接return却是行不通的。​

最后发现需要用Promise在外面包装一次才可以。​

正确写法如下:

var exports = module.exports = {};

exports.insertNew = (_username, _password, db) => {

  return new Promise( (resolve, reject) => {

    db.collection('user').insertOne(

        {

           'username': _username,

          'password': _password

&nb

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

node

mocha

分类: 程序员

在Mocha测试用例中,包含测试应用写成这样是很自然的:

var login = require('../app/login/login.js');

然后login.js中是这样写的:

var tool = require('tool/tool.js');

没问题吧,对不对?不对,有问题。

运行mocha时就会报错,找不到tool.js。

为什么?因为mocha没有那么聪明,并不会从被测试的应用的路径开始进行load。

解决方法:使用app-module-path

在测试文件的require应用之间加入下面这一句:

require('app-module-path').addPath(process.env.PWD + '/app');

process.env.PWD代表了运行mocha时的路径,就是你应用的主目录。

'/app'是你所有应用存放的目录。


​​​

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2017-08-16 14:54)
标签:

aquamacs

elm-mode

分类: 程序员

因为想使用elm-mode,发现Aquamacs上是没有elm-mode包的,

只能从M​ELPA上安装。

设置方法:在.emacs中加入以下内容,

;; Melpa 

(require 'package) 

(add-to-list 'package-archives 

        '('melpa' . 'http://melpa.milkbox.net/packages/') t) 

(package-initialize)

这样就可以使用M-x package-list-packages​命令来搜索和安装MELPA里面的包了。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

mongodb

分类: 程序员

1. 显示所有数据库统计信息

 db.adminCommand({listDatabases: 0});

2. 显示所有collections

show collections

3. 显示collection的统计信息​

db.restaurants.stats();​

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

angularjs

express

客户端: AngularJs & angular-file-upload

后端:Express & ​express-busboy

当点击文件上传时,发现了奇怪的现象:

上传的请求的method不是post, 而是分为两次, 第一次是options, 第二次才是post。

解决方案:

在Express的请求过滤的最后加上:

app.use(function(req, res, next) {

...​

  if ('OPTIONS' === req.method) {

    res.send(200);

  }

next();

}​

遇到options请求就返回200,然后应用里面正常写app.post('/upload', ...​

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
个人资料
孤独古怪的孩子
孤独古怪的孩子
  • 博客等级:
  • 博客积分:0
  • 博客访问:64,289
  • 关注人气:12
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
搜博主文章
好友
加载中…
访客
加载中…
评论
加载中…
留言
加载中…
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有