Jasmine 数据提供程序不工作(jasmine_data_provider_1.using 不是函数)

Jasmine Data Provider is not working (jasmine_data_provider_1.using is not a function)

我正在尝试通过使用 jasmine 数据提供程序在我的项目中实现数据驱动测试。

我有一个如下所示的 data.ts 文件

export const hardshipTestData = {

    scenarios: {

        scenario1: {
        isHome: 'Yes'
        },

        scenario2: {
            isHome: 'No'
        }

    }
};

我在规格文件中使用以上数据

import { using } from 'jasmine-data-provider';
import { hardshipTestData } from '../../data/testdata';

 using(hardshipTestData.scenarios, function (data, description) {
        it('testing data providers', () => {
            console.log(data.isHome);
        });
    });

我的问题是当我尝试编写 data. 智能时甚至没有给出选项 isHome。当我执行它和 运行 测试时,我收到以下错误

TestSuite encountered a declaration exception
configuration-parser.js:48
  - TypeError: jasmine_data_provider_1.using is not a function

感谢任何帮助

您需要更改导入类型。尝试替换:

import { using } from 'jasmine-data-provider';

与:

const using = require('jasmine-data-provider');

此外,请记住首先应该是 describe 块:

describe('example test', () => {
    using(hardshipTestData.scenarios, (data) => {
        it('should calc with operator -', () => {
            console.log(data.isHome);
        });
    });
});

添加到 Oleksii 答案中,他的答案是针对打字稿的。 但如果你想在普通 javascript 中使用,请使用以下内容:

在您的代码中添加以下内容:

var using = require('jasmine-data-provider');

示例:

var jasminedatasetobj = require("./jasmineDataDrivenData");
var using = require('jasmine-data-provider');

using(jasminedatasetobj.datadrive, function (data, description) {
it('Open NonAngular js website Alerts', async() => {


    await browser.get("https://qaclickacademy.github.io/protocommerce/");
    element(by.name("name")).sendKeys(data.name);

});
});

您可能需要为普通 javascript 提供 Jasmine 数据提供程序的完整路径,以避免出现模块未找到错误。

  var jsondataobj = require('../../../../config/Jsoninput.json');//define  the data source location
    var using = require('C:/Users/sam/AppData/Roaming/npm/node_modules/jasmine-data-provider'); 

    describe("Test Jasmine Data provider",function(){

您需要为 "jasmine-data-provider" 声明变量,因为 import 可以用来导入 properties/classes。 你可以给变量起任何名字而不是使用变量(我试过使用 "post" 而不是 "using" 并且它仍然按预期工作)

你的代码应该像

import { hardshipTestData } from "../Test";

const using = require("jasmine-data-provider");

describe("Login TestCases", () => {
using(hardshipTestData.scenarios, (alldata: any, alldesc: any) => {
        it("login with different credentials", async () => {
 console.log(data.isHome);
})
})
})

这将解决您的问题。