我正在尝试为包含简单提示的 Oclif 挂钩编写单元测试。我想测试钩子的输出,给出对提示的“Y”或“N”响应。
import {Hook} from '@oclif/config'
import cli from 'cli-ux'
const hook: Hook<'init'> = async function () {
const answer = await cli.prompt("Y or N?")
if(answer === 'Y') {
this.log('yes')
}
else {
this.log('no')
}
}
export default hook
Run Code Online (Sandbox Code Playgroud)
我正在使用此处描述的“fancy-test”和“@oclif/test”测试框架:https ://oclif.io/docs/testing
我试过存根提示和模拟标准输入,但都没有工作 - 存根函数不可用或输出是空字符串。
这是一个测试的尝试(不起作用,因为“cli.prompt 不是函数”):
import {expect, test} from '@oclif/test'
import cli from 'cli-ux'
import * as sinon from 'sinon';
describe('it should test the "configure telemetry" hook', () => {
test
.stub(cli, 'prompt', sinon.stub().resolves('Y'))
.stdout()
.hook('init')
.do(output …
Run Code Online (Sandbox Code Playgroud)我正在构建一个使用REST服务的简单天气应用程序,以显示用户输入的任何城市中的当前天气数据。
仪表板页面应显示用户指定的〜5个城市的当前天气。
所以我的问题是-给定一个由5个城市组成的数组,对该数组中的每个元素发出对REST服务(通过Angular服务)的调用的最佳方法是什么?
这是我最初尝试的代码摘录:
locations: string[] = ["Seattle", "Woodinville", "Krasnoyarsk", "Stockholm", "Beijing"];
...
ngOnInit() {
this.locations.forEach(function(element) {
this.weatherService.getWeather(element).subscribe((data) => {
console.log(data);
});
});
}
Run Code Online (Sandbox Code Playgroud)
但这会产生一个错误:编译失败。
c:/Projects/weather-app/src/app/components/dashboard/dashboard.component.ts(19,12):属性“ weatherService”在“ void”类型上不存在。
我意识到“ forEach”在这里不起作用-但是在ng 4中执行此操作的最佳实践是什么?
谢谢。
我只想了解人们认为在使用 graphql/orm 设置的服务器上验证用户输入文件(例如 url 或电子邮件地址)的最佳实践。
我的应用程序使用 apollo server / gql 和 sequelize 作为 orm。
我见过一些人在 sequelize 中对模型进行验证,并在 graphql 解析器中使用验证库或使用自定义标量进行其他验证示例。
任何一种方式都可取?谢谢。
我正在构建一个使用 web3 与以太坊智能合约交互的网页。每当我将 web3 导入页面时,我都会在 Netlify 构建中遇到错误:
9:54:39 PM: ModuleNotFoundError: Module not found: Error: Can't resolve 'electron' in '/opt/build/repo/node_modules/swarm-js/node_modules/got'
9:54:39 PM: > Build error occurred
9:54:39 PM: Error: > Build failed because of webpack errors
Run Code Online (Sandbox Code Playgroud)
我可以通过将 web3 导入添加到页面来重现出现此错误与未出现此错误的情况:
import web3 from '../ethereum/web3'
Run Code Online (Sandbox Code Playgroud)
上面的代码只是从另一个文件导出实例化的 web3 实例:
import Web3 from "web3";
let web3;
if (typeof window !== "undefined" && typeof window.ethereum !== "undefined") {
// We are in the browser and metamask is running.
window.ethereum.request({ method: "eth_requestAccounts" });
web3 = new Web3(window.ethereum); …
Run Code Online (Sandbox Code Playgroud)