小编boi*_*ing的帖子

为什么我收到“测试完成后无法登录?”

这是我第一次尝试开玩笑。我正在尝试为我的服务运行“stock”测试,即,feathersjs 在通过 cli 创建服务时为您设置的测试。该服务使用带有回调的异步函数,作为最后一步,我在控制台中进行了一些日志记录。我收到错误:“测试完成后无法记录。您是否忘记在测试中等待某些异步内容?” 我怀疑测试在退出之前不会等待回调完成,因此当回调执行时会在测试完成后尝试记录。

这是库存测试:

  it('registered the service', () => {
    const service = app.service('order');
    expect(service).toBeTruthy();
  });
Run Code Online (Sandbox Code Playgroud)

我尝试了文档中提到的一些技术,例如 async/await:

  it('registered the service', async () => {
    const service = await app.service('order');
    expect(service).toBeTruthy();
  });
Run Code Online (Sandbox Code Playgroud)

我尝试使用“完成”:每次我都会收到相同的错误消息。

这是执行日志记录的服务代码部分:

  amqp.connect(amqp_url, (err0, conn) => {
    if(err0) {
      throw(err0);
    }

    conn.createChannel((err1, ch) => {
      if(err1) {
        throw(err1);
      }

      ch.assertQueue(orchToOrderQName);
      ch.consume(orchToOrderQName, function(msg) {
        ch.ack(msg);
        service.emit('create', msg);
      });
      orchToOrderChannel = ch;
    });

    conn.createChannel((err1, ch) => {
      if(err1) {
        throw(err1);
      }

      ch.assertQueue(orderToOrchQName);
      orderToOrchChannel = ch;
  
      console.log(" [*] Order …
Run Code Online (Sandbox Code Playgroud)

jestjs feathersjs

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

Formik:如何从数组设置初始值?

我有一些客户对象,这些对象具有与其关联的一系列信用卡,如下所示:

{
  "_id":"5d63e3a32f093f2b5e41ef96", 
  "firstName": <firstName>,
  "lastName": <lastName>,
  "email": <email>,
  "createdAt":"2019-08-26T13:50:27.409Z",
  "modifiedAt":"2019-09-14T20:10:00.257Z",
  "paymentMethods":[{
    "name": <name>, 
    "last4": <last4>, 
    "expirationDate": <expDate>,
    "isDefault":false,
    "token": <token>
  }, {
    "name": <name>, 
    "last4": <last4>, 
    "expirationDate": <expDate>,
    "isDefault":false,
    "token": <token>
  }, {
    "name": <name>, 
    "last4": <last4>, 
    "expirationDate": <expDate>,
    "isDefault":false,
    "token": <token>
  }
}
Run Code Online (Sandbox Code Playgroud)

我想在 formik 中设置初始值。像这样:

const INITIAL_VALUES = {
  firstName: customer.firstName,
  lastName: customer.lastName,
  email: customer.email,
  phoneNumber: customer.phone,
  paymentMethods: ???????
};
Run Code Online (Sandbox Code Playgroud)

我希望能够编辑付款方式信息。我可以绘制表单,以便所有字段都出现正确的次数,但如何使用 formik 设置初始值?

谢谢!

reactjs formik

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

验证步进器组件的子表单

我正在使用 React 和material-ui。我正在使用步进器组件来实现电子商务网站的结账渠道:

              <React.Fragment>

                {getStepContent(activeStep)}

                <div className={classes.buttons}>
                  {
                  <Button onClick={handleNext} className={classes.button}>
                    {activeStep === steps.length - 1 ? 'Place order' : 'Next'}
                  </Button>
                </div>
              </React.Fragment>
Run Code Online (Sandbox Code Playgroud)

getStepContent 定义如下:

function getStepContent(step) {
  switch (step) {
  case 0:
    return <ShippingForm cart={cart}/>;
  case 1:
    return <AddressForm cart={cart}/>;
  case 2:
    return <PaymentForm cart={cart}/>;
  case 3:
    return <Review cart={cart}/>;
  default:
    throw new Error('Unknown step');
  }
}
Run Code Online (Sandbox Code Playgroud)

我想在此过程中进行一些验证,例如,除非填写了所有必填字段,否则用户无法越过地址表单。我的问题是“下一步”按钮位于“步骤”组件之外。我对 React 有点陌生,但是 Next 按钮的 handleClick 函数似乎没有好的方法来访问 AddressForm 组件中的数据来进行验证,也没有启动 AddressForm 组件中的某些验证函数。单击“下一步”按钮时进行验证的最佳方法是什么?

reactjs material-ui

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

Nodejs 变量在“await”之后未定义

我知道已经有这样的问题了。我保证我已经读过它们;我只是不明白。我有一些简单的代码来获取第 3 方 API 服务的令牌:

let tok = '';
const getToken = async () => {
  tok = await btt.get();
  console.log(tok);
};
getToken();
Run Code Online (Sandbox Code Playgroud)

tok总是undefinedconsole.log. 我认为重点await是你的代码会暂停,直到特定的承诺得到解决或拒绝;我错了吗?这是get函数:

async get () {
  this.paymentGateway.clientToken.generate({
    customerId: '5cdc7405da53494ee0f3bafe'
  }, (err, result) => {
    return new Promise((resolve, reject) => {
      if (result.success) {
        resolve(result.clientToken);
      } else {
        reject(result.errors);
      }
    });
  });
}
Run Code Online (Sandbox Code Playgroud)

我已经被这个特定问题困扰了一段时间,并尝试了很多不同的方法。如果有人可以提供帮助,我将不胜感激。

谢谢。

javascript node.js promise async-await

3
推荐指数
1
解决办法
1845
查看次数

为什么使用 :before 和 :after 而不是直接设置组件样式?

我工作的公司有一个内部扩展的引导课程。我在使用他们提供的复选框时遇到困难,因此我必须深入研究他们的代码。我从这个 HTML 片段开始:

<div class="checkbox XXXbs-checkbox">                
    <label for="checkbox-id">Some Text</label>
    <input class="form-control" id="checkbox-id" name="checkbox-name" role="checkbox" type="checkbox" value="y">
</div>
Run Code Online (Sandbox Code Playgroud)

他们的复选框 css 包含此内容(“XXX”代替了标识我工作的公司的字符串):

.XXXbs-checkbox input[type=checkbox] {
    opacity: 0;
    margin-left: 4px;
    cursor: pointer;
    z-index: 1;
    width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

不透明度为 0,使上述 HTML 中的实际复选框不可见。同时,他们还有这样的:

.XXXbs-checkbox>label::before {
    font-family: XXX-icon;
    content: "\e903";
    font-size: 32px;
    position: absolute;
    top: -15px;
    left: 0;
}
Run Code Online (Sandbox Code Playgroud)

在标签前放置一个空复选框,如下:

.XXXbs-checkbox>input[type=checkbox]:checked+label::before {
    content: "\e904";
    color: #000
}
Run Code Online (Sandbox Code Playgroud)

渲染一个带有复选标记的框。

我的问题是,为什么要使用这种方法?为什么要在标签前面绘制一个假复选框,而不是仅设计实际复选框的样式?

html css

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