标签: ava

错误:*.default不是构造函数

我在测试一些javascript代码时得到以下错误,从一个打字稿文件中转换而来.

这是错误:

Error: _mapAction2.default is not a constructor
Run Code Online (Sandbox Code Playgroud)

以下是导致错误的代码行:

var mapAction = new MapAction(MapActionType.POLYGONDRAGGED, []);
Run Code Online (Sandbox Code Playgroud)

这是原始的typescript -file map-action.ts:

import { IMapAction} from './imap-action';
import { MapActionType } from './map-action-type.enum';
import {LatLngLiteral} from 'angular2-google-maps/core';

export class MapAction implements IMapAction{
    type: MapActionType;
    paths: Array<LatLngLiteral>;

    constructor(mapActionType: MapActionType, paths: Array<LatLngLiteral>){
        this.type = mapActionType;
        this.paths = paths;
    }

    public getType(): MapActionType{
        return this.type;
    }

    public getPaths(): Array<LatLngLiteral>
    {
        return this.paths;
    }

}
Run Code Online (Sandbox Code Playgroud)

这是转换后的.js文件map-action.js:

"use strict";
class MapAction {
    constructor(mapActionType, paths) { …
Run Code Online (Sandbox Code Playgroud)

javascript typescript ava

40
推荐指数
3
解决办法
4万
查看次数

ava:SyntaxError:意外的令牌导入

所以ava带有内置的ES2015支持,适用于我的实际测试文件.但是,当我这样做的时候

import {newUser, createUser, login} from './helpers/user';
Run Code Online (Sandbox Code Playgroud)

我无法import在帮助文件中使用和导出,然后我得到:

Users/rowe/Code/fv/foxvision-api/test/api/helpers/user.js:1
(function (exports, require, module, __filename, __dirname) { import request from 'supertest';

SyntaxError: Unexpected token import
Run Code Online (Sandbox Code Playgroud)

我没有设置特定的babel配置,因为它开箱即用的测试文件.任何人都可以向我解释为什么帮助器依赖关系不会被babel转换?使用test/**/helpers甚至遵循ava惯例.

谢谢,罗宾

所以基于thangngoc89的解决方案,我做的工作是:

  1. 添加.babelrc内容:
{
  "presets": [
    "es2015",
    "stage-2"
  ],
  "plugins": [
    "espower",
    "transform-runtime"
  ]
}
Run Code Online (Sandbox Code Playgroud)
  1. 添加到package.json:
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}
Run Code Online (Sandbox Code Playgroud)

ava

27
推荐指数
1
解决办法
6815
查看次数

如何让测试脚本暂停3秒再继续运行?剧作家

我正在运行一个名为“创建管理”的测试。测试会先创建admin,然后检查admin是否创建成功。

在脚本中,我有一部分代码我想等待 3 秒再继续,因为每当单击提交按钮时,网站在导航完成后需要花费 3 秒来刷新管理表(用户信息列表) 。有关更多信息,此刷新不是导航,因此我的“waitForNavigation()”不起作用。

因此,流程将是这样的:“填写表单”>“点击提交按钮”>“等待导航”>“重新加载用户表(3s)”。

如果我不等待3秒表刷新,测试将抛出错误,因为在表中找不到注册用户(我有其他脚本来查找用户)。

这是单击“保存按钮”时导航的样子: 在此输入图像描述

之后,该表需要 3 秒刷新,如下所示: 在此输入图像描述

这就是“创建”函数的样子: 在此输入图像描述

javascript testing functional-testing ava playwright

20
推荐指数
3
解决办法
4万
查看次数

在没有 babel 的情况下对原生 ES 模块的导出进行存根

我正在使用 AVA + sinon 来构建我的单元测试。由于我需要 ES6 模块并且我不喜欢 babel,因此我在整个项目中使用 mjs 文件,包括测试文件。我使用“--experimental-modules”参数来启动我的项目,并在测试中使用“esm”包。以下是我的ava配置和测试代码。

  "ava": {
    "require": [
      "esm"
    ],
    "babel": false,
    "extensions": [
      "mjs"
    ]
  },


// test.mjs
import test from 'ava';
import sinon from 'sinon';
import { receiver } from '../src/receiver';
import * as factory from '../src/factory';

test('pipeline get called', async t => {
  const stub_factory = sinon.stub(factory, 'backbone_factory');
  t.pass();
});
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

  TypeError {
    message: 'ES Modules cannot be stubbed',
  }
Run Code Online (Sandbox Code Playgroud)

如何在没有 babel 的情况下存根 ES6 模块?

node.js sinon ecmascript-6 ava es6-modules

13
推荐指数
1
解决办法
8122
查看次数

针对数据库的集成测试 - AVA

在编写单元测试之后,我面临集成测试,其中包括针对数据库(rethinkdb)测试库.

每个测试用例必须彼此独立,并且每次测试后数据库都将被清除,这样它们就不会产生误报.

由于AVA架构是并行运行测试,我发现我无法以这种方式实现正面测试.例如:

test.beforeEach(async function(t) {

  const users = t.context.users = await DB.models.User.save([
    {name: 'jhon',username: 'doe'},
    {name: 'fabri',username: 'fenos'},
    {name: 'will',username: 'red'},
    {name: 'smith',username: 'blue'},
    {name: 'paul',username: 'orange'},
    {name: 'tesla',username: 'ele'},
  ]);

  t.context.tasks = await DB.models.Task.save([
    {title: 'My task1', description: 'My duty1', assignee_id: _.sample(users).id},
    {title: 'My task2', description: 'My duty2', assignee_id: _.sample(users).id},
    {title: 'My task3', description: 'My duty3', assignee_id: _.sample(users).id},
  ]);
});

test.afterEach(async (t) => {
  return await DB.clearDB();
});
Run Code Online (Sandbox Code Playgroud)

我被迫使用串行功能允许每个测试完成并以串行方式清除DB.

如果测试同时共享相同的数据,我的测试可能会更新或删除可能导致误报的数据.

如果我正在写的测试只是读取数据,我只是做直播,只是作为清洁的工作pre,并post在问题中提到的脚本#311 …

ava

12
推荐指数
1
解决办法
1083
查看次数

如何在使用jest时设置jsdom

我正在尝试从AVA迁移到Jest.在AVA中,您可以设置环境中的ava.setup设置jsdom.例如,创建DOM结构并执行必要的polyfill(localStorage).

我如何在Jest中实现这一目标?目前,我正在使用beforeEach每个测试套件,这不是最好的解决方案.

提前致谢!

javascript jsdom jestjs ava

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

用于“ava”测试的 ES6 导入不起作用

我按照文档使用ava创建了我的第一个测试,但它似乎无法正常运行。我收到以下错误。我尝试import 'babel-register';在文件顶部添加,它可以工作,但前提是我运行一个特定的测试文件。例如ava ./test/helpers/test_helper.jsava虽然单独运行...导致下面的导入错误。有没有其他人知道如何解决这个问题?入门指南使用 ES6 导入,我不知道为什么我的不能正常工作。

(function (exports, require, module, __filename, __dirname) { import test from 'ava'; ^^^^^^ SyntaxError: Unexpected token import

测试.js

import test from 'ava';

test(t => {
  t.deepEqual([1, 2], [1, 2]);
});
Run Code Online (Sandbox Code Playgroud)

javascript testing ava

8
推荐指数
2
解决办法
5177
查看次数

使用AVA和Avoriaz在Vue.js中测试计算属性

我正在尝试使用AVA和Avoriaz测试Vue.js组件的计算属性.我可以挂载组件并访问数据属性.

当我尝试访问计算属性时,该函数似乎没有该组件上的数据的范围.

computed: {
  canAdd() {
    return this.crew.firstName !== '' && this.crew.lastName !== '';
  }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是 Error: Cannot read property 'firstName' of undefined

测试文件:

import Vue from 'vue';
import { mount }
from 'avoriaz';
import test from 'ava';
import nextTick from 'p-immediate';
import ComputedPropTest from '../../../js/vue-components/computed_prop_test.vue';

Vue.config.productionTip = false;

test.only('Should handle computed properties', async(t) => {
  const MOCK_PROPS_DATA = {
      propsData: {
        forwardTo: '/crew',
        crew: {}
      }
    },
    wrapper = mount(ComputedPropTest, MOCK_PROPS_DATA),
    DATA = {
      crew: {
        firstName: 'Ryan',
        lastName: …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js computed-properties ava avoriaz

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

测试正在通过,覆盖范围未显示

我想nyc avababel所有人在一起好好相处.我有一个问题,async/await分支显示为未覆盖,所以这是有效的,我无法集成babel-plugin-istanbul插件进行测试.

我在项目中有两个文件,src/index.jssrc/test.js.

{
    "name": "example",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "ava",
        "coverage": "NODE_ENV=test nyc npm run test",
        "report": "nyc report --reporter=html",
        "report:open": "open ./coverage/index.html",
        "cover": "npm run coverage && npm run report && npm run report:open"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
        "babel-runtime": "^6.26.0",
        "bluebird": "^3.5.0",
        "lodash": "^4.17.4"
    },
    "devDependencies": {
        "ava": "^0.22.0",
        "babel-cli": "^6.26.0",
        "babel-plugin-istanbul": "^4.1.4",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-preset-env": "^1.6.0",
        "babel-register": …
Run Code Online (Sandbox Code Playgroud)

babel istanbul ava nyc

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

如何使用AVA模拟浏览器特定属性`window.location.origin`

上下文

我有Frontend React + Webpack应用程序使用后端API.我的Webpack设置取决于window.location.origin属性,用于设置和部署过程.目前,我正在使用Karma testrunner并试图用AVA testrunner替换它.

我正在尝试将AVA 应用于webpack配方的这个单一条目设置我也将JSDOM应用为节点的dom模拟器.

问题

一些测试捆绑在一起,使用该location.origin属性.在运行webpack && ava脚本期间会抛出错误:

var apiUrl = process.env.API_URL && process.env.NODE_ENV !== 'production' ? process.env.API_URL : location.origin;
ReferenceError: location is not defined
Run Code Online (Sandbox Code Playgroud)

Karma在浏览器引擎上运行并window.location.origin动态再现值.与AVA不同.运行测试时它不会运行任何类型的浏览器.我只能(据我所知)"模仿"浏览器环境jsdom,这就是我想要做的.但是问题链接location.origin不支持特定属性jsdom

问题

任何人都可以跟踪我的解决方案,window.location.origin为AVA动态(环保)重现吗?我知道我可以将它保持不变并将其存储在.env每个环境中.但这是我想要缓解的另一项维护任务.

javascript jsdom reactjs webpack ava

7
推荐指数
0
解决办法
457
查看次数