我有一个 Go 方法,可以向外部网页发出 http 请求,我正在屏幕抓取。当一切按计划进行时,我进行了单元测试。我可以模拟 httpclient 并将响应设置为预定义值。但是,当事情不起作用时,我在创建测试时遇到了困难。我想模拟 http.NewRequest 返回错误。
我正在使用 httptest 和 go 工具 cover。
测试方法:
func (cli *Client) GetSomething(sometext string) (string, error) {
searchURL := strings.Replace(someUrl, "{PERSON_NAME}", url.QueryEscape(sometext), 1)
req, err := http.NewRequest("GET", someUrl, nil)
if err != nil {
// I want to test this scenario
return "", errors.Wrap(err, "failed to build request")
}
resp, err := cli.HTTPClient.Do(req)
if err != nil {
return "", errors.Wrap(err, "request failed")
}
defer resp.Body.Close()
document, err := goquery.NewDocumentFromReader(resp.Body)
if err != …Run Code Online (Sandbox Code Playgroud) 我在 Visual Studio 2017 中有一个 nodejs 项目,正在尝试使用 mocha 进行单元测试。出于某种原因,如果测试资源管理器需要任何不在 node_modules 中的文件,则它无法找到单元测试。
我有一个简单的测试 index.spec.js 并且测试资源管理器能够找到单元测试:
var assert = require('assert');
describe('Index Suite 1', function () {
it('Test 1', function () {
assert.ok(true, "This shouldn't fail");
});
it('Test 2', function () {
assert.ok(1 === 1, "This shouldn't fail");
assert.ok(false, "This should fail");
});
});
Run Code Online (Sandbox Code Playgroud)
我有一个相同的测试 heros.spec.js,并添加了“var hero = require('./heroes');” 它没有找到单元测试。我假设它找不到英雄。文件 hero.js 与 hero.spec.js 位于同一文件夹中。我也用 ./heroes.js 试过了。在这两个文件中,TestFramework 都设置为 Mocha
这是文件 hero.spec.js
var assert = require('assert');
var heroes = require('./heroes');
describe('Heroes Test', function () { …Run Code Online (Sandbox Code Playgroud)