1

編集: POST 要求を API に送信し、データベース クエリを実行し、最終的にデータベース出力を API 応答と照合するいくつかのテストを作成しています。これらの個々のタスクを実行するコードがありますが、特定の注文?

var frisby = require('frisby');
var oracledb = require('oracledb');
var url = require('endpoints.js');
var auth = require('users.js');
var dbConnect = require('dbconfig.js');

var myDetails = undefined;

function submitRequest(){
  frisby.create('Update contact details')
  .put(url.myAccount, {
    "addressLine-1": 'String',
    "addressLine-2": 'String',
    addressTown: 'String',
    addressCounty: 'String',
    addressPostcode: 'String',
    homePhone: 'String',
    mobilePhone: 'String'
  }, {json: true})
  .expectStatus(200)
  .expectHeaderContains('content-type', 'application/json')
  .auth(auth.username1, auth.password1)
.toss();
readDatabase();
}

function readDatabase(){
  oracledb.getConnection(
    {
      user          : dbConnect.user,
      password      : dbConnect.password,
      connectString : dbConnect.connectString
    },
    function(err, connection){
      if (err) {
        console.error(err.message);
        return;
      }
      connection.execute(
      "SELECT addressLine1, addressLine2, addressLine3, town, county, postcode, homePhone, mobilePhone"
      + "FROM addressDetails"
      + "WHERE accountNo = 1",

      function(err, result){
        if (err) {
          console.error(err.message);
          return;
        }
        myDetails = JSON.stringify(result.rows);
        myDetails = JSON.parse(myDetails);
    });
});
matchValues();
}

function matchValues(){
frisby.create('Match Database and API Values')
  .get(url.myAccount)
  .expectStatus(200)
  .expectHeaderContains('content-type', 'application/json')
  .auth(auth.username1, auth.password1)
  .afterJSON(function (body) {
    expect(body.addressLine1).toMatch(myDetails[0][0])
    expect(body.addressLine2).toMatch(myDetails[0][1])
    expect(body.addressLine3).toMatch(myDetails[0][2])
    expect(body.town).toMatch(myDetails[0][3])
    expect(body.county).toMatch(myDetails[0][4])
    expect(body.postcode).toMatch(myDetails[0][5])
    expect(body.homePhone).toMatch(myDetails[0][6])
    expect(body.mobilePhone).toMatch(myDetails[0][7])
  })
.toss();
}

submitRequest();

これを実行すると、コードが常に順番に実行されるとは限らないため、テストが成功することも失敗することもあります。提案どおりに変更しましたが、まだ同じ問題があります。このシナリオにコールバック/プロミスを適用するのは難しいと感じています

4

0 に答える 0