小编Rog*_*ger的帖子

如何模拟 http.NewRequest 返回错误

我有一个 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)

unit-testing http go

6
推荐指数
1
解决办法
5698
查看次数

使用 Mocha 的 Visual Studio 2017

我在 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)

unit-testing mocha.js visual-studio node.js test-explorer

5
推荐指数
1
解决办法
861
查看次数