В настоящее время мой тест сначала создает пользователя, хэширует пароль с помощью HashPassword(null!, пароль)< /code>, а затем сохраняет его в базе данных и возвращает пользователя и нехешированный пароль. Затем я беру это и создаю данные формы, чтобы передать HttpClient для POST действия. Все это работает корректно, с той лишь разницей, что при создании пользователя перед тестом генерируемый хеш отличается от хеша, который генерируется при проверке пользователя в действии.
Единственное, о чем я могу думать, это то, что, поскольку IPasswordHasher является зависимостью с ограниченной областью, область, которую я создаю для создания пользователя перед тестом, отличается от области, созданной для действия, и, следовательно, две разные экземпляры и, возможно, два разных генератора случайных чисел для каждого экземпляра?
В настоящее время я работаю над этим, удаляя все регистрации для IPasswordHasher и регистрацию это снова с моей собственной реализацией MockPasswordHasher, которая просто получает хеш-код пароля и возвращает его в виде строки. Хотя это работает, меня беспокоит, что я отклоняюсь от исходного тестируемого приложения, поскольку то, что будет опубликовано, будет другим, и, следовательно, мои интеграционные тесты могут быть ошибочными.
Код: Выделить всё
internal sealed class MockPasswordHasher :
PasswordHasher
where TUser : class {
public override string HashPassword(
TUser user,
string password) => password.GetHashCode().ToString();
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ates-diffe