守夜模拟HTTP请求
问题描述:
我尝试用nock和其他库像sinonjs模仿HTTP请求,但没有成功。守夜模拟HTTP请求
import nock from "nock"
const URL = "http://localhost:8080/"
const SIGN_IN_PATH = "/fake/users/sign_in.json"
export const signInRequest = (status, payload = {}) => {
return nock(URL).get(SIGN_IN_PATH).reply(status, payload)
}
-
import { signInRequest } from "./../../utils/fakeRequests"
const doLogin = (browser) => {
return browser
.url("http://localhost:8080")
.waitForElementVisible('form', 1000)
.setValue('input[name=email]', '[email protected]')
.setValue('input[name=password]', 'somepass')
.click('button[type=submit]')
.pause(500)
}
export default {
"Do login and shows error message": (browser) => {
signInRequest(403)
doLogin(browser)
.waitForElementVisible('.error', 1000)
.end()
}
}
其可能的模拟HTTP与nightwatch请求?
答
Nightwatch.js
是一个端到端的测试工具 - 这样的一点是,实际的用户界面,以及他们的通话将被直播(而不是嘲笑)的API 因此,也许你正在寻找专为集成测试,如casper.js
框架(http://casperjs.org/)或nightmare
(https://github.com/segmentio/nightmare)
然而嘲讽HTTP调用在nightwatch
应该是可行的与nock
我认为(如果你有值得它的一些奇怪的使用情况) 确保您箭扣HTTP调用的测试之前(他们甚至可以在before
区块),例如:
module.exports = {
'test abc' : function (browser) {
nock('http://example.com')
.get('/users')
.query({name: 'martin'})
.reply(200, {results: [{id: '123'}]});
// do test stuff
},
};
您的示例可能存在的问题是您嘲笑整个用户界面 - nightwatch
可能会以某种方式阻止同一个域被拦截。让您的用户界面和API在不同的域(或端口)上可能会解决问题
同样的问题,任何解决方案? –
不幸的是,没有。 :(。要解决这个问题,你可以启动一个模拟服务器,并在测试环境中更改url值以使用模拟服务器地址。 –
也许,这可以帮助你:http://stackoverflow.com/questions/38353886/洛坦不 - 不工作与-nightwatch硒 –