【发布时间】:2023-04-09 17:07:02
【问题描述】:
目前,以下方法有效,但我知道这是不好的做法,我不希望将来因为此实施而遇到问题。
export const loginQuery = ({ email, password }) => `
mutation login {
login(email: "${email}", password: "${password}") {
authToken
}
}
`;
export default ({ url, method, userPath }) => {
cy.fixture(userPath).then(res => {
const query = loginQuery(res);
cy.request({
method,
url,
headers: { 'Content-Type': 'application/json' },
body: { query },
failOnStatusCode: false
});
});
};
如何正常传入变量而不是手动进行字符串插值?
之所以这样写是因为我不能使用react-apollo/graphql-tag。我已经尝试过,但 graphql 和 react-apollo 需要包装在一个不适用于此 cypress 上下文的组件中。
注意:上述实现不适用于对象/数组。我需要手动传入突变中写出的对象中的特定键,而不仅仅是一个变量来表示整个对象。这显然是个问题。
【问题讨论】:
-
我完全了解graphql中有哪些变量。问题是如何传递它们。查询是一个字符串,而不是一个函数,因此像 graphql/gql 这样的工具可用于正常的 graphql 使用,以便可以传递变量。这里的目标是在没有任何一个的情况下完成同样的事情那些工具。
-
第一个,使用正确的查询语法,第二个使用 fetch/curl/etc 搜索 SO 的突变
标签: javascript graphql cypress apollo string-interpolation