如何在nodejs/javascript中重新抛出错误或异常并包含自定义消息.
我有以下代码
var json = JSON.parse(result);
Run Code Online (Sandbox Code Playgroud)
result如果发生任何解析错误,我想在异常消息中包含内容.像这样的东西.
1. try {
2. var json = JSON.parse(result);
3. expect(json.messages.length).to.be(1);
4. } catch(ex) {
5. throw new Error(ex.message + ". " + "JSON response: " + result);
6. }
Run Code Online (Sandbox Code Playgroud)
这里的问题是我丢失了堆栈跟踪.
有没有办法做到这一点java?
throw new Error("JSON response: " + result, ex);
Run Code Online (Sandbox Code Playgroud) 是否可以通过提交消息引用Gitlab中的问题?我在网上找不到任何东西.
class A {
private def sayHello() {
println "Anish"
}
}
def a_obj = new A()
a_obj.sayHello()
Run Code Online (Sandbox Code Playgroud)
输出: Anish
有没有什么方法可以保护sayHello()groovy或我错过了什么?
我是OOP的新手并学习设计模式所以我写了一些简单的代码来试用一个Factory方法,一切看起来都不错,除非我想添加另一个子类型.这是迄今为止的代码:
public interface Person {
public String getDescription();
}
public class Adult implements Person {
@Override
public String getDescription() {
return "I am an ADULT";
}
}
public class Child implements Person {
@Override
public String getDescription() {
return "I am a CHILD";
}
}
public class PersonFactory {
public Person create(int age) {
if (age < 18) return new Child();
return new Adult();
}
}
public class ClientA {
public static void main(String[] args) {
PersonFactory personFactory = new …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用创建以下单元测试jest.
jest.dontMock("pointsAwardingActions.js");
describe("points awarding actions", () => {
describe("award points", () => {
it("should dispatch begin ajax action", () => {
var pointsAwardingActions = require("pointsAwardingActions.js");
const mockedDispatch = jest.fn();
});
});
});
Run Code Online (Sandbox Code Playgroud)
但运行后我收到以下错误npm test.
TypeError: jest.fn is not a function
这是我的一部分package.json.
{
"scripts": {
"test": "jest"
},
"author": "alayor",
"license": "ISC",
"jest": {
"scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
"testFileExtensions": ["spec.js"],
"moduleFileExtensions": ["js"],
"collectCoverage": "true"
},
"dependencies": {
"babel-cli": "6.8.0",
"babel-core": "6.8.0",
"babel-jest": "^6.0.1",
"babel-loader": "6.2.4",
"babel-plugin-react-display-name": "2.0.0", …Run Code Online (Sandbox Code Playgroud) 我有以下要测试的模块。
import * as apiUtils from './apiUtils';
export function awardPoints(pointsAwarding) {
return apiUtils.callApiService("POST", "points", pointsAwarding);
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试。
it("should call apiUtils with correct path", () => {
//given
jest.spyOn(apiUtils, 'callApiService');
//when
pointsAwardingApi.awardPoints();
//then
expect(apiUtils.callApiService).toBeCalledWith(expect.any(String), 'points', expect.any(Object));
});
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此测试时,出现以下错误。
Any<Object> as argument 3, but it was called with undefined.
我原以为这expect.any(Object)也会匹配,undefined但似乎并非如此。
我也试过,expect.anything()但我遇到了类似的错误。
我可以简单地指定undefined为第三个参数,但我的测试仅用于验证第二个参数。
有没有办法可以使用匹配任何对象的匹配器,包括undefined?
我有这门课.
class Assignment {
private Integer index;
private List<Quantity> quantities;
}
Run Code Online (Sandbox Code Playgroud)
然后,我有一个来自该类的对象列表.
List<Assigment> assignments = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
有没有办法创建一个Map包含索引Assignment和List<Quantity>as值的方法?
这是我到目前为止所尝试的.
assignments.stream().collect(groupingBy(Assignment::getIndex));
Run Code Online (Sandbox Code Playgroud)
但这给了我一个Map<Integer, List<Assignment>>,我想要一个Map<Integer, List<Quantity>>.
我已经尝试过使用forEach方法 - 它可以工作 - 但我确信必须有一种方法可以在一个衬里中完成它 - 或者至少只使用collect和groupingBy方法
我正在使用 wheresrhys fetch-mock npm 模块在我的应用程序中运行功能测试。我想用“POST”方法和特定的有效负载来模拟一次提取。
它看起来像这样:
fetchMock.mock({
routes: {
name: 'LoginSuccess',
matcher: "https://myurl",
method: 'POST',
payload: {
params:{User: "ABCDE@gmail.com", Password: "password"}
},
response: {
result:{
message: "Successful login",
credentials: "XXXXXXXXXXXXX"
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想检查我的 fetch 的有效负载并相应地给出响应。例如,我可以模拟用户提交错误密码的一次登录,然后他们再次尝试并提交正确的信息并被授予访问权限。相同的 url,不同的负载,不同的响应。
是否有可能做到这一点?我知道可以检查获取的方法,但我想对有效载荷做同样的事情。
或者有没有更好的方法来做到这一点?
我还没有在模块的自述文件或fetch-mock 包的测试部分找到解决方案。
我有很多服务,我想通过身份验证服务集中我的身份验证。现在我是 Spring boot 的菜鸟,我不知道如何使这成为可能。
我只是从 Spring 实现了正常的安全性,它工作得很好,我只找到了一些关于的教程jdbcAuthentication,inMemoryAuthentication等的教程,但没有找到身份验证服务向另一个服务发送请求的身份验证。有人知道这件事吗?
我的安全基于代币 ->JWT
我想我需要操纵AuthenticationManagerBuilder因为它决定用户名是否有效。
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
}
Run Code Online (Sandbox Code Playgroud)
我用 Feign 提出请求 - 也许这段代码的位置错误
@Override
public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) throws AuthenticationException, IOException, ServletException {
AccountCredentials credentials = new ObjectMapper()
.readValue(req.getInputStream(), AccountCredentials.class);
UserRequest userRequest = Feign.builder()
.decoder(new GsonDecoder())
.target(UserRequest.class,"http://localhost:7998/api/user-service/user/" + credentials.getUsername());
return getAuthenticationManager().authenticate(new UsernamePasswordAuthenticationToken(credentials.getUsername(),credentials.getPassword(),emptyList()));
}
Run Code Online (Sandbox Code Playgroud) 我有以下WebSocketJava 客户端代码。
final ClientEndpointConfig cec = ClientEndpointConfig.Builder.create().build();
ClientManager client = ClientManager.createClient();
client.connectToServer(new Endpoint() {
@Override
public void onOpen(Session session, EndpointConfig config) {
try {
session.addMessageHandler((MessageHandler.Whole<String>) message -> {
System.out.println("Received message: "+message);
});
session.getBasicRemote().sendText(SENT_MESSAGE);
} catch (IOException e) {
e.printStackTrace();
}
}
}, cec, new URI("wss://ws.bitso.com"));
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我收到此错误。
org.glassfish.tyrus.core.HandshakeException: Response code was not 101: 400
Run Code Online (Sandbox Code Playgroud)
可能是什么原因?
java ×4
javascript ×3
jestjs ×2
unit-testing ×2
commit ×1
expect.js ×1
fetch ×1
fetch-mock ×1
gitlab ×1
groovy ×1
jasmine ×1
java-8 ×1
java-stream ×1
mocking ×1
node.js ×1
private ×1
reactjs ×1
spring ×1
tyrus ×1
websocket ×1