Как я могу дразнить блок?

Вот мое решение в Python для этого:

import requests
import json

def getMovieTitles(substr):
    titles = []  
    data = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}".format(substr))  
    response = json.loads(data.content.decode('utf-8'))    
    for page in range(0, response["total_pages"]):       
        page_response = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}&page={}".format(substr, page + 1))    
        page_content = json.loads(page_response.content.decode('utf-8'))
        #print ('page_content', page_content, 'type(page_content)', type(page_content))    
        for item in range(0, len(page_content["data"])):           
             titles.append(str(page_content["data"][item]["Title"]))  
    titles.sort()  
    return titles

print(getMovieTitles("spiderman"))
5
задан R. Martinho Fernandes 3 September 2009 в 20:45
поделиться

1 ответ

TypeMock очень мощный. Я думаю, он справится. Для других макетов фреймворков, таких как Moq или Rhino, вам нужно будет использовать другую стратегию.

Стратегия для Rhino или Moq:

Например: вы используете класс Asssembly , чтобы получить полную сборку имя.

public class YourClass
{
    public string GetFullName()
    {
        Assembly ass = Assembly.GetExecutingAssembly();
        return ass.FullName;
    }
}

Класс Assembly , производный от интерфейса _Assembly . Итак, вместо использования Assembly напрямую, вы можете внедрить интерфейс. Затем вы можете имитировать интерфейс для вашего теста.

Модифицированный класс:

public class YourClass
{
    private _Assembly _assbl;
    public YourClass(_Assembly assbl)
    {
        _assbl = assbl;
    }

    public string GetFullName()
    {
        return _assbl.FullName;
    }
}

В вашем тесте вы имитируете _Assembly :

public void TestDoSomething()
{
    var assbl = MockRepository.GenerateStub<_Assembly>();

    YourClass yc = new YourClass(assbl);
    string fullName = yc.GetFullName();

    //Test conditions
}
9
ответ дан 14 December 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: